从零开始,跟我一起做jblog项目(三)从Maven到Gradle
从零开始,跟我一起做jblog项目(一)引言
从零开始,跟我一起做jblog项目(二)Maven
从零开始,跟我一起做jblog项目(三)从Maven到Gradle
上一节讲到项目构建工具Maven,对JAR包的管理不可谓不强大
博主在使用maven引入Spring框架时,了解到Spring推荐使用gradle工具来构建项目
百度了一下,发现Gradle也是一套很优秀的项目构建工具
Gradle使用Groovy语言配置项目和依赖,在极大地提升灵活性和配置性之外,甚至配置代码要比XML结构的POM文件少很多
鉴于我希望将jblog打造成一款modern的小型个人博客系统
而gradle的首页上介绍自己为Modern Open-Source Enterprise Build Automation
所以我决定将项目原型从maven构建转移为gradle构建
目前关于Gradle的教程还比较零散,下面我会一步一步演示如何将Gradle集成到myeclipse中去
首先,到Gradle官网下载最新版的gradle
下载地址是http://gradle.org/gradle-download/
博主下载的是2.8版本,写这篇文章的时候已经更新到2.9了
下载下来解压到任意目录
然后配置Windows环境变量,一共要配置三个,分别如下:
GRADLE_HOME:你的gradle解压路径,例如:D:\Workspaces\gradle-2.8
GRADLE_USER_HOME:你希望作为本地仓库的路径,自己建一个名为.gradle的路径,例如:D:\Workspaces\.gradle
path:这个不用说,系统路径,可以在cmd中直接敲gradle命令的,在path最后添加:%GRADLE_HOME%\bin;
这三个配置好了,我们初步验证一下,打开cmd,任意路径下敲入gradle -v命令,出现下面的响应就算安装成功了
关于gradle的详细命令和用法,大家可以参考下面的教程
http://wiki.jikexueyuan.com/project/gradle/
建议快速阅读上面的教程后,我们来将gradle植入eclipse/myeclipse中
打开eclipse,进入marketplaces,搜索gradle,找到Gradle IDE Pack,经过博主测试这个插件是最好用的
安装好Gradle IDE Pack插件后,重启eclipse,新建一个最简单的JAVA Project,或者试试Web Projec也可以
在项目根目录下新建一个build.gradle文件,如图所示
编辑build.gradle配置文件,示例如下:
apply plugin: "java" apply plugin: "eclipse"sourceCompatibility = 1.8 version = '1.0'configurations {provided }sourceSets {main.compileClasspath += configurations.providedtest.compileClasspath += configurations.providedtest.runtimeClasspath += configurations.provided }repositories {mavenLocal()maven {url "http://maven.oschina.net/content/groups/public/"} mavenCentral() }dependencies {compile "org.hibernate:hibernate-core:5.+"testCompile "junit:junit:4.7"provided "javax.servlet:javax.servlet-api:4.+" }//注意下面这个配置,新版本gradle如果不使用数组添加的话会导致eclipse频繁报错 eclipse.classpath.plusConfigurations += [configurations.provided]
保存build.gradle文件后,右键project,选择configure,选择convert to gradle project,为项目添加gradle特性
添加完gradle特性后,我们来让eclipse将build.gradle中定义的几个依赖包加入到项目中来
在这之前还需要配置一下Gradle IDE Pack插件,eclipse的window->preferencecs->Gradle,配置我们本地的gradle路径
配置好了以后就万事具备了,我们来试验一下,如何将build.gradle文件中定义的依赖引入eclipse环境中
右击project项目,选择gradle,选择Enable Dependency Management,让插件来打开依赖管理
打开之后,仍然右键项目,gradle->Refresh Dependencies,刷新一下依赖列表
在后台,gradle将按照上述文件的定义,依次检索我们系统中的maven本地仓库,chinaos提供的中国镜像仓库,以及maven中央仓库
将所需要的包下载到配置的gradle本地仓库中,再引入到eclipse的classpath中,效果如下图所示:
至此,关于gradle集成到eclipse的所有工作就结束了,项目编写过程中,如果要继续引入JAR包,就在build.gradle文件中添加
然后刷新一下gradle的依赖,就能实时添加到eclipse的环境中去了
最后着重讲解一下provided的scope(有效依赖范围),上一篇讲到maven,其中配置依赖的scope常用的有下面几种
compile:编译,测试,打包时都需要依赖,比如spring、hibernate、struts等
test:测试时需要依赖,常见的有junit
provided:一般由容器提供,只有写代码时需要依赖,比如servlet
runtime:打包运行时需要依赖
转移到gradle以后,gradle默认只为我们提供了四种scope,如下:
compile:编译范围依赖在所有的 classpath 中可用,同时它们也会被打包
runtime:依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要 JDBC API JAR,而只有在运行的时候才需要 JDBC 驱动实现
testCompile:测试期编译需要的附加依赖
testRuntime:测试运行期需要
可以看到gradle默认并未提供类似provided的scope,那比如我们需要写web project,则需要引入servlet包,而这时就比较麻烦
我们可以向eclipse的build path手工添加tomcat下的servlet包,但那样未免显得太low了,毕竟我们已经选择使用项目构建工具来管理我们的JAR包了
别着急,gradle毕竟是使用一种编程语言来配置项目构建的,所以它的灵活性相当高,在上述的配置文件中,我们人为定义了一个provided的scope
并且将这个provided使用sourceSet集合定义了范围,明确了在main目录的compile期间需要依赖,在test目录的编译期间和运行期间需要依赖
言下之意就是在main目录的运行期间不需要依赖喽,也就是运行时不需要将此provided范围的依赖打包
最后配合eclipse插件,向eclipse的classpath中添加了这一provided范围,结果eclipse会将servlet引入到项目依赖中。
转载于:https://www.cnblogs.com/newflydd/p/4972922.html
从零开始,跟我一起做jblog项目(三)从Maven到Gradle相关推荐
- 现在投入两三万元,在农村做哪些项目,一年能有10万以上的收入?
这是一个粉丝的问题.对于目前农村的生意项目,基本都是满足于普通百姓的日常所需和生产经营,范围本身就不大,罗列一下也就那么些.那么,现在投入两三万元,在农村做哪些项目,一年能有10万以上的收入呢?我这里 ...
- 做一个项目,平时都用到哪些工具提高效率(上)
做一个项目,平时都用到哪些工具提高效率(上) 转载 做.NET 相关项目,Visual Studio 2008,SQL Server 2000/2005是标准的配置,但是,除此之外,还可以应用哪些工 ...
- 做一个项目,平时都用到哪些工具提高效率(下)
接上回,继续分享.NET开发中关于工具的使用经验 15 报表工具.数据的导入导出是系统的一项基本功能,我们让用户辛苦的输入那么多数据,现在是让用户享受成果的时候,你的程序要能用各种方法分析用户的in ...
- 物联网项目(三)平台架构
物联网项目(三)平台架构 介绍下目前整个软件开发团队的配套成员 技能 人数 android 1 ios 1 前端 1 美工 1 java 2 以上就是我们这个项目的人员搭配,我除了项目上的管理,更多的 ...
- 网络存储技术Windows server 2012(项目三 存储池的配置与管理)
网络存储技术Windows server 2012(项目三 存储池的配置与管理) 目录 前言 一.项目背景 二.项目实训题 任务实操步骤 1.添加3块硬盘到存储服务器中,创建1个存储池. 2.在存储池 ...
- 【项目三、车牌检测+识别项目】四、使用LPRNet进行车牌识别
目录 前言 一.数据集 二.训练 三.验证 四.测试结果 五.推理代码 Reference 前言 马上要找工作了,想总结下自己做过的几个小项目. 之前已经总结过了我做的第一个项目:xxx病虫害检测项目 ...
- 实验项目三:基于A*搜索算法迷宫游戏开发
基于A*搜索算法迷宫游戏开发 由于这一个不太完美,重新写了一个基于python的程序. 一.前言 二.基本流程 三.界面设计 四.迷宫随机生成 五.移动迷宫与尾迹生成 六.A*迷宫自动寻路 七.附加 ...
- Unity游戏开发——新发教你做游戏(三):3种资源加载方式
文章目录 一.前言 二.Unity的目录结构规范 1.Resources(不是很推荐把资源放这个目录) 2.RawAssets(存放生资源) 3.GameRes(存放熟资源) 4.StreamingA ...
- 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!
经常关注我的人就知道我从去年开始就有做群控的工作室,之前也写过群控类的文章.自动阅读是群控分类的一个项目,我很早之前就发现朋友在做自动阅读项目,之后和他一起深入了解了这个项目.我做微信业务方面对自动阅 ...
最新文章
- Apache优化配置——工作模式
- WEBSERVICE之JDK开发webservice
- python线性回归算法简介_Python机器学习(二):线性回归算法
- linux系统中如何安装qwt,linux下Qt开发环境中qwt库的安装与使用
- Hive案例:统计单词个数
- 【codevs3147】矩阵乘法2,”名“不副”实“
- 大时代已过,小趋势可期
- linux下编辑文件实验,Linux上最常用的文本编辑器vi/vim使用教程
- vivado2018.3和modelsim10.6d进行联合仿真
- java数组实现队列
- 比char还小的变量
- Linux内核学习笔记(一)CFS完全公平调度类
- 鱼塘钓鱼(fishing)
- c语言小饭店等位就餐程序,小饭店预约登记管理系统,
- linux 服务器共享文件客户端查看,在Linux下查看共享文件夹
- 洛谷-P3975 弦论(后缀自动机板子题)
- chrome浏览器的性能测试--本文引用自 百度百科http://baike.baidu.com/view/1835504.htm
- 关于CSS动画播放完后消失
- 【自己开发小程序】自己怎么开发一个小程序呢?
- Redis安装教程(详细)