运行 gradle 任务在其他任务的 doLast 之后
Run gradle task after doLast of a other task
我的 build.gradle (xy) 文件中有一个变量,它包含一个整数值和三个简单的任务。树任务也被“捆绑”在第四个任务中,将三个任务一一调用。如果我调用任务callAll,任务callOne应该给 int 值加 5,task callTwo 也应该给 int 值加 5,但是在 doLast 块中,最后是 task callThree 打印出值。它应该是 10 但它打印了 5,我猜是因为 doLast 块。但是我不明白为什么,我声明调用任务 callThree it mustRunAfter callTwo 在任务callAll.
这个例子当然是我拥有的一个更复杂的build.gradle的简化版本。如何在不更改三个简单任务的情况下获得正确的输出?
project.ext{
xy= 0
}
task callOne(){
xy = xy + 5
}
task callTwo(){
doLast{
xy = xy + 5
}
}
task callThree(){
println "xy : $xy"
}
task callAll(){
dependsOn 'callOne'
dependsOn 'callTwo'
dependsOn 'callThree'
tasks.findByName('callTwo').mustRunAfter 'callOne'
tasks.findByName('callThree').mustRunAfter 'callTwo'
}
Gradle 构建运行三个不同的阶段:初始化、配置和执行 (Documentation)。
在配置阶段,配置项目及其任务。在这个阶段:
callOne
集 xy = xy + 5
callTwo
什么都不做
callThree
打印 println "xy : $xy"
任务在 Gradle 构建的执行阶段执行,这意味着:
callOne
什么都不做
callTwo
集 xy = xy + 5
callThree
什么都不做
打印 5
而不是 10
,因为您正在混合配置和执行阶段。
callAll
或多或少只是配置任务图的自定义生命周期任务。 callAll
本身不执行对其他任务的调用,因此在执行阶段不执行任何操作。
您可以通过将所有任务操作包含在 doFirst {}
或 doLast {}
块中来获得您想要的行为。
请查看 Configuration time and execution time 了解更多信息。
我的 build.gradle (xy) 文件中有一个变量,它包含一个整数值和三个简单的任务。树任务也被“捆绑”在第四个任务中,将三个任务一一调用。如果我调用任务callAll,任务callOne应该给 int 值加 5,task callTwo 也应该给 int 值加 5,但是在 doLast 块中,最后是 task callThree 打印出值。它应该是 10 但它打印了 5,我猜是因为 doLast 块。但是我不明白为什么,我声明调用任务 callThree it mustRunAfter callTwo 在任务callAll.
这个例子当然是我拥有的一个更复杂的build.gradle的简化版本。如何在不更改三个简单任务的情况下获得正确的输出?
project.ext{
xy= 0
}
task callOne(){
xy = xy + 5
}
task callTwo(){
doLast{
xy = xy + 5
}
}
task callThree(){
println "xy : $xy"
}
task callAll(){
dependsOn 'callOne'
dependsOn 'callTwo'
dependsOn 'callThree'
tasks.findByName('callTwo').mustRunAfter 'callOne'
tasks.findByName('callThree').mustRunAfter 'callTwo'
}
Gradle 构建运行三个不同的阶段:初始化、配置和执行 (Documentation)。
在配置阶段,配置项目及其任务。在这个阶段:
callOne
集xy = xy + 5
callTwo
什么都不做callThree
打印println "xy : $xy"
任务在 Gradle 构建的执行阶段执行,这意味着:
callOne
什么都不做callTwo
集xy = xy + 5
callThree
什么都不做
5
而不是 10
,因为您正在混合配置和执行阶段。
callAll
或多或少只是配置任务图的自定义生命周期任务。 callAll
本身不执行对其他任务的调用,因此在执行阶段不执行任何操作。
您可以通过将所有任务操作包含在 doFirst {}
或 doLast {}
块中来获得您想要的行为。
请查看 Configuration time and execution time 了解更多信息。