Gradle是什么?Gradle是Json配置文件吗?
Gradle 是一个项目自动化构建开源工具,它使用一种基于 Groovy 的特定领域语言(DSL)来声明项目设置。
buildscript {
}
⇩
void buildscript(Closure configureClosure);
⇩
buildscript({
})
buildscript{} 类似 Json 配置文件的写法,其实对应 void buildscript(Closure configureClosure) 方法,该方法接受一个闭包参数。我们可以把 buildscript{} 当做是 buildscript({}) 方法的简写。
闭包是什么?
闭包是可传递的代码块,{} 和 {} 内的代码块就是闭包,稍后将被执行。java 中实现代码块传递是将方法包在对象中,如点击事件。
Task
- 使用方法:./gradlew taskName
- task 的结构:
task taskName {
初始化代码
doFirst {
task 代码
}
doLast {
task 代码
}
}
- doFirst doLast 和普通代码段的区别:
- 普通代码段:在 task 创建过程中就会被执行,发生在 configuration 阶段
- doFirst() 和 doLast():在 task 执⾏过程中被执⾏,发⽣在 execution 阶段。如果⽤户没有直接或间接执⾏ task,那么它的 doLast() doFirst() 代码不会被执⾏
- doFirst() 和 doLast() 都是 task 代码,其中 doFirst() 是往队列的前⾯插⼊代码,doLast() 是往队列的后⾯插⼊代码
- task 的依赖:
可以使⽤ task taskA(dependsOn: b) 的形式来指定依赖。指定依赖后,task 会在⾃⼰执⾏前先执⾏⾃⼰依赖的 task。
Gradle 执⾏的⽣命周期
- 三个阶段:
- 初始化阶段:执⾏ settings.gradle,确定主 project 和⼦ project
- 定义阶段:执⾏每个 project 的 bulid.gradle,确定出所有 task 所组成的有向⽆环图
- 执⾏阶段:按照上⼀阶段所确定出的有向⽆环图来执⾏指定的 task
- 在各阶段之间插⼊代码:
- ⼀⼆阶段之间:settings.gradle 的最后
- ⼆三阶段之间:
afterEvaluate {
插⼊代码
}