Gradle 基本语法结构
语法一
Closure
:闭包,一个可以被传递的方法
1 | void test(int i , Closure data) { |
语法二
methodMissing
:默认方法,当调用不存在的方法时会触发该函数
1 | class A{ |
buildTypes
构建类型
1 | buildTypes { |
可通过 BuildVariants
选项选取要编译的类型
也可通过配置对应文件夹进行代码配置,以执行不同的逻辑
productFlavors
多版本打包
1 | flavorDimensions 'paying','nation' // 分组 |
可通过 BuildVariants
选项选取要编译的类型
此时构建类型会有以下组合:buildTypes
数量 * productFlavors
组1数量 * productFlavors
组2数量
freeChinaDebug
、freeChinaRelease
、freeGlobalDebug
……
跟buildTypes
一样,同样可以通过配置对应文件夹进行代码配置,以执行不同的逻辑,文件夹名称以构建类型自由组合,如:free
、freeDebug
、china
、chinaDebug
、freeChinaDebug
等等
这样就可以非常精细的配置类型
task
groovy 任务,被 task 声明的函数内部都属于配置项
1 | // 无论是执行 gradlew 还是执行 gradlew clean,都会打印 1、2 和 7 |
先行任务doFirst
:如果task
有多个doFirst
,第二个会插在第一个的前面,第三个插在第二个前面,以此类推
后续任务doLast
:如果task
有多个doLast
,会在doFirst
后面进行按顺序插入
1 | // 执行 gradlew clean,会以1、2、7 和 5、3、4、6的形式打印 |
task依赖
通过 dependsOn: task 的方式来依赖另一个任务,会先执行依赖任务再执行自身任务
1 | // 会先 打印 1、2 再打印 3、4 |
Gradle生命周期
三个阶段:初始化阶段(setting.gradle) -> 定义阶段/配置阶段(build.gradle) -> 执行阶段