构建工具--Gradle
谈到Gradle,都知道是一种构建工具。那就要先了解一下什么是构建工具,为什么要使用构建工具?
什么是构建工具
构建工具是一个把源代码生成可执行应用程序的过程自动化的程序。构建包括编译、连接跟把代码打包成可用的或可执行的形式。基本上构建的自动化是编写或使一大部分任务自动执行的一个动作,而这些任务则是软件开发者的日常,像是:
- 下载依赖
- 将源代码编译成二进制代码
- 打包生成的二进制代码
- 进行单元测试
- 部署到生产系统
为什么要使用构建工具或构建自动化
在小型项目中,开发者往往手动调用构建过程,这样在大型的项目中很不实用,在构建过程中难以跟踪什么需要被构建、按照什么顺序构建以及项目中存在哪些依赖。使用自动化工具会使构建过程更为连续。
对Gradle的理解
1、Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.
2、Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能
对构建工具和Gradle进行简单了解后,学习一下如何进行安装配置Gradle.
Gradle下载
官网下载链接:http://services.gradle.org/distributions/,官方提供了许多版本下载,选择自己需要的版本
Gradle下载好后,解压到当前文件夹中
安装配置
右键桌面此电脑,选择菜单中的属性选项
点开对话框后,点击高级系统设置
在弹出的系统属性对话框中,点击环境变量
在弹出的环境变量窗口中,在系统变量选项下点击新建
变量名:GRADLE_HOME
变量值:gradle的解压路径
然后在系统变量中找到Path变量,双击打开或点击编辑,在弹出的对话框点击新建
在新建框中输入%GRADLE_HOME%\bin,点击确定。Gradle的安装和配置就完成了,需要验证安装是否成功。
打开cmd对话框,输入gradle。会显示BUILD SUCCESSFUL,说明安装配置成功。
Gradle与Maven简单对比
1.,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数,比如在Maven中你要引入一个依赖:
<properties> <kaptcha.version>2.3</kaptcha.version> </properties> <dependencies> <dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId>kaptcha</artifactId> <version>${kaptcha.version}</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
将其转换成Gradle脚本
dependencies {
compile('org.springframework:spring-core:2.5.6')
compile('org.springframework:spring-beans:2.5.6')
compile('org.springframework:spring-context:2.5.6')
compile('com.google.code.kaptcha:kaptcha:2.3:jdk15')
testCompile('junit:junit:4.7')
}
2.Maven和Gradle对依赖项的scope有所不同。在Maven世界中,一个依赖项有6种scope,分别是complie(默认)、provided、runtime、test、system、import。而grade将其简化为了4种,compile、runtime、testCompile、testRuntime。
3.Gradle支持动态的版本依赖。在版本号后面使用+号的方式可以实现动态的版本管理。
4.在解决依赖冲突方面Gradle的实现机制更加明确。使用Maven和Gradle进行依赖管理时都采用的是传递性依赖;而如果多个依赖项指向同一个依赖项的不同版本时就会引起依赖冲突。而Maven处理这种依赖关系往往是噩梦一般的存在。而Gradle在解决依赖冲突方面相对来说比较明确。