----《Android Gradle 权威指南》学习笔记
-
在 Gradle 中,有很多种方式来创建任务。这都依赖于 Project 提供的快捷方法以及 TaskContainer 提供的相关 create 方法。在阅读一些 Gradle 脚本的时候,见到一些不熟悉的创建任务的方法也不用奇怪,一般都有如下几种创建任务的方式。
-
第一种方式:直接以一个任务名字创建任务,举个栗子:
def Task createTask1 = task(createTask1)
createTask1.doLast {
println "直接以一个任务名字创建任务"
}
在命令行中执行命令:gradle -q createTask1
打印结果:
直接以一个任务名字创建任务
这种创建任务的方式其实就是调用 Project 对象的 task(String name) 方法。
- 第二种方式:以一个任务名字 + 一个对该任务配置的 Map 对象来创建任务。举个栗子:
def Task createTask2 = task(createTask2, group: BasePlugin.BUILD_GROUP)
createTask2.doLast {
println "createTask2:"
println "任务分组:" + createTask2.group
}
在命令行中执行命令:gradle -q createTask2
打印结果:
createTask2:
任务分组:build
和第一种方式大同小异,只是多了一个 Map 参数,用于对要创建的 Task 进行配置。比如在代码中指定了分组为 BULID,通过打印结果看配置是没有问题的。下面是 Map 中可用的配置:
配置项 描述 默认值
type 基于一个存在的 Task 来创建,和类的继承差不多 DefaultTask
overwrite 是否替换存在的 Task,和 type 配合使用 false
dependsOn 用于配置任务的依赖 []
action 添加到任务中的一个 Action 或者闭包 null
description 用于配置任务的描述 null
group 用于配置任务的分组 null
- 第三种方式:任务名字 + 闭包配置。举个栗子:
task createTask3 {
description("createTask3")
doLast {
println "任务描述:" + description
}
}
在命令行中执行命令:gradle -q createTask3
打印结果:
任务描述:createTask3
因为 Map 参数配置的方式可以配置的项时有限的,所以可以通过闭包的方式进行更加灵活的配置。闭包里面的委托对象就是 Task,所以可以使用 Task 对象的任何方法、属性等信息进行配置。
- 第四种方式:TaskContainer 创建任务。举个栗子:
tasks.create('createTask4') {
description("createTask4")
doLast {
println "任务描述:" + description
}
}
在命令行中执行命令:gradle -q createTask4
打印结果:
任务描述:createTask4
- 其实以上方式在源码中最终都是调用 TaskContainer 对象的 create 方法,其参数和 Project 中的 Task 方法基本一样。
网友评论