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

时间:2018-12-12 05:51:10

标签: gradle build build.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
  

确实是唯一的方法,它引入了要执行的Task 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")
    }
}

1 个答案:

答案 0 :(得分:1)

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

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")在实际任务开始执行之前在配置阶段执行。

您可以在official Gradle documentation

中了解有关构建生命周期的更多信息。