11--Gradle进阶 - Gradle任务的定义方式、指定任务的属性
前言
在前面的篇章中,我们写了不少 task 任务,但是任务完整的定义方式,指定哪些任务属性 没有一个归纳的总结。
本篇章我们来熟悉一下。
任务定义方式
任务定义方式,总体分为两大类:
-
一种是通过 Project 中的task()方法
-
另一种是通过tasks 对象的 create 或者register 方法。
// 1.通过 Project 中的task()方法定义:
task('taskA', {
//任务名称,闭包都作为参数println "taskA..."
println "taskA...."
})
task('taskB') {
//闭包作为最后一个参数可以直接从括号中拿出来println "taskB..."
println "taskB...."
}
task taskC {
//groovy语法支持省略方法括号:上面三种本质是一种println "taskC..."
println "taskC...."
}
// 2.通过tasks 对象的 create 或者 register 方法
// 2.1 action属性可以设置为闭包task(map,"D");
def map = new HashMap<String, Object>();
map.put("action", { println "taskD.." })
// 2.2 通过 tasks 对象 create 定义任务
tasks.create('taskE') {
//使用tasks的create方法println "taskE.."
println "taskE..."
}
// 2.2 通过 tasks 对象 register 定义任务
tasks.register('taskF') {
//注:register执行的是延迟创建。也即只有当task被需要使用的时候才会被创建。
println "taskF...."
}
定义任务的属性
当然:我们也可以在定义任务的同时指定任务的属性,具体属性有:
在定义任务时也可以给任务分配属性:
定义任务的时候可以直接指定任务属性,也可以给已有的任务动态分配属性:
//3. 定义任务的属性
//①.Z是任务名,前面通过具名参数给map的属性赋值,以参数方式指定任务的属性信息
task(group: "lijw", description: "this is task Z", "taskZ")
//②.H是任务名,定义任务的同时,在内部直接指定属性信息
task("taskH") {
group("lijw")
description("this is the task H")
}
//③.Y是任务名,给已有的任务 在外部直接指定属性信息
task "taskY" {}
taskY.group = "lijw"
//案例:给已有的clean任务重新指定组信息为 lijw 组
clean.group("lijw")
可以在 idea 中看到: 上面自定义的那几个任务和 gradle 自带的 clean 任务已经跑到:lijw 组了。