例如,我有Gradle脚本,如:
myTask_A {
doFirst {
println "first string"
}
doLast {
println "last string"
}
}
Run Code Online (Sandbox Code Playgroud)
以下两个任务具有完全相同的执行结果:
myTask_B {
doFirst {
println "first string"
println "last string"
}
}
myTask_C {
doLast {
println "first string"
println "last string"
}
}
Run Code Online (Sandbox Code Playgroud)
doFirst&doLast的设计目的是什么,因为上述任何任务都会产生相同的结果?
Alp*_*par 29
它与可扩展性,重用和避免重复有关.
对于一个内置任务可以扩展如下:
task CopyAndThen(type: Copy) {
doFirst {
println "this is before the actual copy"
}
doLast {
println "this is after the actual copy"
}
}
Run Code Online (Sandbox Code Playgroud)
想到的第二个常见场景是多项目构建,您可以在项目顶部使用常见行为定义任务定义:
allprojects {
task myTask_a {
doFirst {...}
}
}
Run Code Online (Sandbox Code Playgroud)
然后具体项目可以扩展.该任务基本上有一个需要运行的闭包列表,以及插入到列表末尾的选项doFirst或doLast控件.
| 归档时间: |
|
| 查看次数: |
10075 次 |
| 最近记录: |