什么';Gradle doFirst和doLast的设计目的是什么?
例如,我有Gradle脚本,如:什么';Gradle doFirst和doLast的设计目的是什么?,gradle,Gradle,例如,我有Gradle脚本,如: myTask_A { doFirst { println "first string" } doLast { println "last string" } } 以下两个任务具有完全相同的执行结果: myTask_B { doFirst { println "first string" println "last string" } } myTa
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和doLast的设计目的是什么?它和可扩展性、重用和避免重复有关 例如,内置任务可以扩展为:
task CopyAndThen(type: Copy) {
doFirst {
println "this is before the actual copy"
}
doLast {
println "this is after the actual copy"
}
}
我想到的第二个常见场景是,您可以在项目顶部有一个具有常见行为的任务定义:
allprojects {
task myTask_a {
doFirst {...}
}
}
然后具体的项目可以扩展。
任务本质上有一个需要运行的列表,选择
doFirst
或doLast
控制插入到列表的哪一端 如果在一个任务中声明多个DoFirst或doLast会怎么样?这是一个有效的配置,每个DoFirst
或doLast
都是一个添加到列表中的闭包,并按顺序执行。多个doLast
将按声明的顺序执行,而dofirst
将按相反的顺序执行。啊,谢谢。我真希望它被命名为“addFirst/Last”或“insertFirst/Last”。