例如,我有Gradle脚本,如:
myTask_A {
doFirst {
println "first string"
}
doLast {
println "last string"
}
}
以下两个任务具有完全相同的执行结果:
myTask_B {
doFirst {
println "first string"
println "last string"
}
}
myTask_C {
doLast {
println "first string"
println "last string"
}
}
doFirst& amp;的设计目的是什么? doLast,因为上述任何任务产生相同的结果?
答案 0 :(得分:21)
它与可扩展性,重用和避免重复有关。
对于一个内置任务,可以扩展为:
task CopyAndThen(type: Copy) {
doFirst {
println "this is before the actual copy"
}
doLast {
println "this is after the actual copy"
}
}
我想到的第二个常见场景是multi project builds,您可以在项目顶部使用常见行为定义任务定义:
allprojects {
task myTask_a {
doFirst {...}
}
}
然后具体项目可以扩展。
该任务基本上有一个需要运行的Closures列表,以及doFirst
或doLast
控件的选择,插入到的列表的末尾。