----《Android Gradle 权威指南》学习笔记
总目录:Gradle 学习系列 -- 目录
上一篇:Gradle 构建脚本基础:任务依赖
下一篇:Gradle 构建脚本基础:自定义属性
任务间通过 API 控制、交互
-
创建一个任务就可以认为是定义了一个 Task 类型的变量,变量名就是定义的任务名称。所以可以通过任务名称,使用 Task 内置的 API 访问它的方法、属性或者对任务重新配置等,对于操纵任务时很方便和灵活的。
-
在变量一样,要使用任务名操纵任务,必须先定义声明,因为在脚本中代码是按顺序执行的。举个栗子,在 build.gradle 中有以下代码:
task taskHello {
println "taskHello -- doLast1"
}
taskHello.doFirst {
println("taskHello -- doFirst1")
}
taskHello.doLast {
println("taskHello -- doLast222")
println project.hasProperty("taskHello")
}
在命令行中执行命令:gradle -q taskHello
打印结果:
taskHello -- doLast1
taskHello -- doFirst1
taskHello -- doLast222
true
- 把上面的代码稍微改动一些,把 doFirst() 方法和 doLast() 方法的代码顺序反过来:
task taskHello {
println "taskHello -- doLast1"
}
taskHello.doLast {
println("taskHello -- doLast222")
println project.hasProperty("taskHello")
}
taskHello.doFirst {
println("taskHello -- doFirst1")
}
在命令行中执行命令:gradle -q taskHello
打印结果:
taskHello -- doLast1
taskHello -- doFirst1
taskHello -- doLast222
true
通过打印可以得出:
(1) doFirst() 和 doLast() 方法分别是在任务执行前后处理一些逻辑,和代码的前后顺序无关
(2) 最后打印了 true,说明每一个任务都是 Project 的一个属性
- 既然可以通过 API 操作任务,那么当创建了多个任务时,同样也可以通过 API 让它们相互访问,比如可以增加一些依赖等,就像两个变量相互访问一样。
网友评论