Gradle:如何在执行依赖之前执行任务doFirst?



在gradle中,如果Task B dependsOn Task A如何将代码添加到始终作为整个链中的第一部分执行Task B

以下代码段是输出

> Task :A
A doFirst
A doLast
> Task :B
B doFirst
B doLast

但是,所需的输出是:

> Task :B
I AM going to set some variables/checks, pre A and pre B
> Task :A
A doFirst
A doLast
> Task :B
B doFirst
B doLast

实际上是唯一的方法,引入执行的任务C 在 A 之前(B 依赖于 C,A.mustRunAfter C),所以它是链中的第一个?

格拉德尔:

task A {
doFirst {
println("A doFirst")
}
doLast {
println("A doLast")
}
}
task B {
dependsOn A
/* doInitialize {
println("I AM going to set some variables/checks, pre A and pre B")
}*/
doFirst {
println("B doFirst")
}
doLast {
println("B doLast")
}
}

您可以尝试在构建的配置阶段运行初始化逻辑。您只需要指定您的任务,如下所示:

task B {
dependsOn A
println("I AM going to set some variables/checks, pre A and pre B")
doFirst {
println("B doFirst")
}
doLast {
println("B doLast")
}
}

在这种情况下,println("I AM going to set some variables/checks, pre A and pre B")在配置阶段执行,在实际任务执行开始之前。

您可以在 Gradle 官方文档中阅读有关构建生命周期的更多信息

最新更新