话不多说,直接上测试代码(注意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