Gradle 构建脚本基础:任务间交互

2021-12-27  本文已影响0人  冯可乐同学

----《Android Gradle 权威指南》学习笔记

总目录:Gradle 学习系列 -- 目录
上一篇:Gradle 构建脚本基础:任务依赖
下一篇:Gradle 构建脚本基础:自定义属性

任务间通过 API 控制、交互

  1. 创建一个任务就可以认为是定义了一个 Task 类型的变量,变量名就是定义的任务名称。所以可以通过任务名称,使用 Task 内置的 API 访问它的方法、属性或者对任务重新配置等,对于操纵任务时很方便和灵活的。

  2. 在变量一样,要使用任务名操纵任务,必须先定义声明,因为在脚本中代码是按顺序执行的。举个栗子,在 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
  1. 把上面的代码稍微改动一些,把 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 的一个属性

  1. 既然可以通过 API 操作任务,那么当创建了多个任务时,同样也可以通过 API 让它们相互访问,比如可以增加一些依赖等,就像两个变量相互访问一样。
相关代码:https://gitee.com/fzq.com/gradle-demos
上一篇 下一篇

猜你喜欢

热点阅读