一、项目自动化介绍
1.1主流的构建工具
Ant: 编译、测试、打包
Maven: 依赖管理、发布
Gradle: 一个开源的项目自动化构建工具,建立在Apache Ant和Apache Maven概念的基础上,并引入了基于Groovy的特定领域语言(DSL),而不再使用XML形式管理构建脚本。其实质就是一个用Groovy语言编写的程序框架
1.2 Gradle做什么?
作为一个构建工具,它必定具有构建工具的功能,比如:依赖管理、自动化运行测试、打包、发布到指定的地方去。因为其具有很好的灵活性和扩展性,给程序提供更广阔的空间。
二、Gradle的安装
因为Gradle是基于JVM的,所以一定要确定本机已经安装了JDK。
步骤一:
下载完成,可以随意找个文件位置进行解压。 步骤二:
三、Gradle的压缩文件下的目录
bin: bin目录下有两个可执行文件,一个是gradle(类unix系统下的可执行文件),一个是gradle.bat(windows系统下的可执行文件)
init.d: 所有的初始化脚本都在这个目录下面,每次执行构建之前都会将这个目录下面的脚本都执行一遍。如果有这方面的需求,可以将脚本拷贝至该目录
lib: gradle本身所依赖的jar包
media: 图标文件
针对项目的build.gradle的解释
//构建脚本默认都有一个Project实例,构建脚本的所有代码
//作用域都是Project
apply plugin: 'java' //apply是一个方法,括号省略了。其参数类型为Map集合
version='0.1' //Project实例上面有一个属性叫version,其值为0.1
//repositories是一个方法,括号省略了。{}及其里面的内容作为一个闭包传递给该方法
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
//创建一个闭包
def createDir = {
path ->
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
}
}
//自定义任务
task makeJavaDir() {
def paths = ['src/define/file1', 'src/define/file2'];
//执行阶段执行的代码
doFirst {
paths.forEach(createDir)
}
}
task makeWebDir(){
//配置阶段就要确定好,任务的依赖,执行阶段修改依赖是错误的做法
dependsOn 'makeJavaDir'
def paths=['src/main/webapp','src/test/webapp']
//执行阶段执行的代码
doLast{
paths.forEach(createDir)
}
}
四、构建脚本概要
4.1 构建块:
4.2 项目
group、name、version三者就是一个依赖的坐标,又它们三者来确定唯一依赖的库
apply: apply是Project上面的一个方法,它用来引入当前项目需要哪些插件
dependencies: 用来申明当前项目依赖于哪些jar包或者其它项目
repositories: 用来指定当前项目依赖哪些库工程
task: 申明当前项目中的任务
属性的其他配置方式: ext、gradle.properties
4.3 任务
depdendsOn: 用于申明任务依赖的
doFirst: task就是一个任务列表,doFirst就是在一个任务列表的最前端添加一个动作
doLast(可以用"<<"代替): doLast就是在一个任务列表的最后端添加一个动作
注意:一个任务里面可以执行多次doFirst、doLast
五、构建的生命周期
初始化阶段:主要初始化项目,确定有哪些项目要参与到构建当中
配置阶段: 主要生成task的依赖关系和执行图
执行阶段:执行task的动作
六、依赖管理
七、版本冲突