创建一个task
创建一个task很简单,直接使用task关键字来创建,最常见的形式是使用task + 名字 + Closure代码块。示例如下。
task ms1 {
println("=================task ms1 added=================")
}
也可以只有task + 名字,就像下面这样。当然这样的task什么也不做。
task myTask
创建task经常还会看到另外一种写法,在名字后面加上 << 符号。
task hello << {
println 'Hello world!'
}
这种写法和下面的写法是等同的,也就是在创建task的时候为其添加了一个action到末尾。不过这种写法目前已被标记为deprecated,预期会在Gradle 5.0版本中移除,所以最好不要再使用了。
task hello {
doLast {
println 'Hello world!'
}
}
上述几种写法都有一个共同点,就是创建task的时候必须指定一个名字,每个task都需要有一个名字,所有的task在创建之后都隶属于某个Project。同一个Project中任意两个task的名字不能相同。
此外,添加task不一定要在build.gradle的最外层,可以放在任意的代码块中,只是在执行时机上有所区别。
如下代码将task hello放到了allprojects()中执行,它会为项目中每一个project创建一个名为hello的task。
allprojects {
task hello
}
如下代码则在循环中创建了task0,task1,task2,task3四个不同的task。
4.times { index ->
task "task$index" {
println "I'm task number $index"
}
}
创建task的时候还可以指定一些参数。比较重要的有:
- type: task类型
- dependsOn:依赖的task列表
- group:task所属的组
为task添加Action
每个task中可以包含0到多个Action,这些Action保存在一个ArrayList成员变量中,当执行这个task时,会按照顺序依次执行所有的Action。
要为task添加Action,可以通过task的doFirst()和doLast()方法来实现。doFirst()方法会将Action添加到ArrayList的开头,而doLast()方法则将Action添加到ArrayList的末尾。可以有多个doFirst()和doLast(),配置task时会按照它们出现的先后顺序添加到Action列表中。
创建task的同时添加Action
可以在创建task的同时添加Action,只需要将其添加到创建task的闭包中即可。
以下代码在创建ms1 task的时候为它添加了4个action。
task ms1 {
doFirst {
println("=================ms1 doFirst1=================")
}
doFirst {
println("=================ms1 doFirst2=================")
}
doLast {
println("=================ms1 doLast1=================")
}
doLast {
println("=================ms1 doLast2=================")
}