所有Gradle的构建工作都是由Tasks组合完成的。
1、多种方式创建任务
在gradle中,可以有多种方式创建任务。这依赖于Project给我们提供的快捷方法以及TaskContainer提供相关的Create方法。
1.1、直接以任务的名字创建任务
Task task(String name) throws InvalidUserDataException;
1.2、任务的名字 + 一个对该任务配置的Map对象的方式
Task task(Map<String, ?> args, String name) throws InvalidUserDataException;
示例:
def Task exeTask = task(group:BasePlugin.BUILD_GROUP,taskName)
Task参数中Map的可用配置
配置项 描述 默认值
type 基于一个存在的Task来创建,和继承差不多 DefaultTask
overwrite 是否替换存在的Task,和type配合起来用 false
dependsOn 任务依赖 []
action 添加到任务中的一个Action或者一个闭包 null
description 任务描述 null
group 任务分组 null
1.3、任务名字 + 闭包配置的方式
Task task(String name, Closure configureClosure);
Map的参数配置的方式可配置项有限,闭包的方式更加灵活,闭包里的委托对象就是Task,所以可以使用Task对象的任何方法、属性等信息。比如:
task defTask {
description "defTask"
doLast {
println "this is a defTask"
}
}
Base:查看Project中关于Task方法的源代码,可以发现其实它们最终都是调用TaskContainer对象中的create方法。
在Project中我们可以通过tasks属性访问TaskContainer。
2、多种方式访问任务
方式一:直接通过任务名访问任务
我们创建的任务都会作为Project的一个属性,属性名就是任务名,所以可以直接该任务名称访问和操纵该任务。
方式二:通过TaskContainer访问
任务都是通过TaskContainer创建的