Task定义和配置
查看工程下所有的task,使用如下命令
gradle tasks
定义一个task
task创建的源码
参数分别是 task 名称,和一个 closure。groovy语法的closure可以写在小括号外面,小括号可以省略
task的源码
public interface Task extends Comparable<Task>, ExtensionAware {
String TASK_NAME = "name";
String TASK_DESCRIPTION = "description";
String TASK_GROUP = "group";
String TASK_TYPE = "type";
// 指定当前task的依赖的其他task
String TASK_DEPENDS_ON = "dependsOn";
// 重写 task
String TASK_OVERWRITE = "overwrite";
// 配置 task 任务逻辑
String TASK_ACTION = "action";
// 构造参数
String TASK_CONSTRUCTOR_ARGS = "constructorArgs";
}
语法
task 自定义task名称
示例
task mytask {
println "hello task."
}
执行自定义task
./gradle mytask
定义task也可以使用上面源码中的 TaskContainer 方式创建一个task
示例
this.tasks.create('mytask2') {
println "hello task2."
}
给 task 添加分组
示例
// 给 自定义task 添加group 和 desc
// 示例一
task mytask1(group: "testGroup", description: "is am a test") {
println "hello task1."
}
// 示例二
task mytask2 {
setGroup("testGroup")
setDescription("is am a test")
}
添加分组的 task,在idea gradle项中会放在一个新组中,没有分组的自定义task会放在 other 中
Task的执行阶段
关于gradle的阶段请查看:gradle生命周期
配置阶段
普通定义的task都是在配置阶段都会被执行。
执行阶段
执行阶段就是特意使用了 gradle xxx 的方式指定某一个task执行。taks才会执行。其他命令task不会执行。
执行阶段的task,在配置阶段不会被执行。只有task才能在执行阶段被执行。使用如下两个函数,让 task 在gradle 执行阶段执行
- doFirst:在task之前添加逻辑
- doLast:在task之后添加逻辑
示例
// 示例一
task testTask(group: "testGroup", description: "is am a test") {
doFirst {
println "hello doFirst. " + group
}
}
// 示例二
testTask.doLast {
println "hello doLast. " + description
}