Gradle Task 执行顺序

话不多说,直接上测试代码(注意finalTask depends的顺序 )

task taskA{
    println("taskA start")
    doFirst { println("taskA dofirst ") }
    doLast { println("taskA doLast") }
    println("taskA end")
}

task taskB{
    println("taskB start")
    doFirst { println("taskB dofirst ") }
    doLast { println("taskB doLast") }
    println("taskB end")
}

task finalTask(dependsOn: [taskB,taskA]){
    println("finalTask start")
    doFirst { println("finalTask dofirst ") }
    doLast { println("finalTask doLast") }
    println("finalTask end")
}

执行gradlew finnalTask 输出顺序如下。

taskA start
taskA end
taskB start
taskB end
finalTask start
finalTask end
taskA dofirst
taskA doLast
taskB dofirst
taskB doLast
finalTask dofirst
finalTask doLast

将finalTask的depensOn变成[taskA,taskB]之后,发现执行顺序跟上面一样。

如果需要按顺序执行taskB,taskA,finalTask,需要将脚本调整如下


task taskA() {
    println("taskA start")
    doFirst { println("taskA dofirst ") }
    doLast { println("taskA doLast") }
    println("taskA end")
}

task taskB {
    println("taskB start")
    doFirst { println("taskB dofirst ") }
    doLast { println("taskB doLast") }
    println("taskB end")
}

task finalTask() {
    println("finalTask start")
    doFirst { println("finalTask dofirst ") }
    doLast { println("finalTask doLast") }
    println("finalTask end")
}

finalTask.dependsOn(taskA)
taskA.dependsOn(taskB)

这样执行顺序就变成 先taskB后taskA 最后finalTask了:

taskA start
taskA end
taskB start
taskB end
finalTask start
finalTask end
taskB dofirst
taskB doLast
taskA dofirst
taskA doLast
finalTask dofirst
finalTask doLast

你可能感兴趣的:(Gradle Task 执行顺序)