Gradle
简介
Java世界中主要有三大构建工具:Ant、Maven和Gradle。Gradle作为build工具的新星,受到谷歌的大力拥护,直接钦定为AS的御用build工具,在java web方面也大有取代maven上位的趋势
它是一个基于 JVM 的富有突破性构建工具,一种可切换的,像 maven 一样的基于约定约定优于配置的构建框架。
IDEA中自动帮我们生成了一些通用的构建规则,有时候,我们会有一些个性化的构建需求,比如引入了第三方库,或者希望在现有的构建方式中增加一些其他的事情,这时候就要通过Groovy进行个性化的编程。
groupId一般分为多个段,以前两段为例子,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat
使用说明
通过执行build.gradle来实现build的功能,build.gradle这个build脚本是需要程序员自己来编写的,可以使用groovy语言来编写,功能强大而且直观。也可以直接引入其他人已经编写好的脚本或工具来实现build,引入方法为通过apply plugin: ‘plugin名’语句实现,plugin可以是build脚本也可以是java程序。
以一个springboot项目为例子
1 | // 相关插件, 包含许多build脚本 |
Gradle与Maven
Maven的依赖:1
2
3
4
5
6
7
8
9
10<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
Gradle在设计的时候基本沿用了Maven的这套依赖管理体系,不过它在引用依赖时还是进行了一些改进1
2
3
4dependencies {
compile 'org.hibernate:hibernate-core:3.6.7.Final'
testCompile ‘junit:junit:4.+'
}
- Gradle比Maven的依赖表达简单
- Maven和Gradle对依赖项的scope有所不同,maven有6种scope,分别是complie(默认)、provided、runtime、test、system、import;gradle只有4种,compile、runtime、testCompile、testRuntime,其他想实现的scope可以使用编码来实现
- Gradle支持动态版本依赖。在版本号后面使用+号的方式可以实现动态的版本管理。
- Gradle解决依赖之间的冲突比Maven要简单