在上一篇文章中我們介紹了如何自定義簡單的任務。本文將通過如下四個簡單任務來說明任務之間的依賴關系。
task compile << {
println "Compiled"
}
task unitTest << {
println "Unit test"
}
task uiTest << {
println "UI test"
}
task clean << {
println "Clean"
}
- 可以使用Task的
dependsOn(Object... paths)method來指定依賴關系。例如 ,unitTest依賴于compile。
unitTest.dependsOn compile
執(zhí)行gradle unitTest -q會輸出如下結果。
Compiled
Unit test
- Gradle中的task之間的關系可以用有向無環(huán)圖(DAG)來表示。任務之間不能互相依賴,否則Gradle會報錯。
unitTest.dependsOn compile
compile.dependsOn unitTest
執(zhí)行gradle unitTest會報錯Circular dependency。
- 沒有依賴關系的任務之間可以通過
mustRunAfter()、finalizedBy()等method來指定任務的執(zhí)行順序。舉例如下:uiTest和unitTest都依賴于compile,那么如何保證uiTest總是在unitTest之后執(zhí)行呢?答案就是使用mustRunAfter()。
uiTest.mustRunAfter unitTest
執(zhí)行gradle uiTest unitTest -q會輸出如下結果,說明unitTest是在uiTest之前運行的。
Compiled
Unit test
UI test