任务定义方式
task('A',{//任务名称,闭包都作为参数
println "taskA..."
})
task('B'){//闭包作为最后一个参数可以直接从括号中拿出来
println "taskB..."
}
task C{//groovy语法支持省略方法括号:上面三种本质是一种
println "taskC..."
}
def map=new HashMap<String,Object>();
map.put("action",{println "taskD.."}) //action属性可以设置为闭包
- 通过 tasks 对象的 create 或者 register
task(map,"D"); tasks.create('E'){//使用tasks的create方法
println "taskE.."
}
tasks.register('f'){ //注:register执行的是延迟创建。也即只有当task被需要使用的时候才会被创建。
println "taskF...."
}
任务属性
//①.F是任务名,前面通过具名参数给map的属性赋值,以参数方式指定任务的属性信息
task(group: "atguigu",description: "this is task B","F")
//②.H是任务名,定义任务的同时,在内部直接指定属性信息
task("H") {
group("atguigu")
description("this is the task H")
}
//③.Y是任务名,给已有的任务 在外部直接指定属性信息
task "y"{}
y.group="atguigu"
clean.group("atguigu") //案例:给已有的clean任务重新指定组信息
任务类型
前面我们定义的 task 都是 DefaultTask 类型的,如果要完成某些具体的操作完全需要我们自己去编写 gradle 脚本,
势必有些麻烦,那有没有一些现成的任务类型可以使用呢?有的,Gradle 官网给出了一些现成的任务类型帮助我们快速
完成想要的任务,我们只需要在创建任务的时候,指定当前任务的类型即可,然后即可使用这种类型中的属性和 API 方法了
# 在build.gradle中新建任务
tasks.register('myClean', Delete) {
delete buildDir
}
# 在命令行执行 gradle myClean 发现就可以将当前 project 的 build 目录删除
def myTask=task MyDefinitionTask (type: CustomTask)
myTask.doFirst(){
println "task 执行之前 执行的 doFirst方法"
}myTask.doLast(){
println "task 执行之后 执行的 doLast方法"
}
class CustomTask extends DefaultTask {
//@TaskAction表示Task本身要执行的方法
@TaskAction
def doSelf(){
println "Task 自身 在执行的in doSelf"
}
}
# 命令行测试
gradle MyDefinitionTask
# 输出结果如下