Gradle的Task(2)任務間的依賴關係

weixin_33728268發表於2016-09-23

上一篇文章中我們介紹瞭如何自定義簡單的任務。本文將通過如下四個簡單任務來說明任務之間的依賴關係。

task compile << {
    println "Compiled"
}
task unitTest << {
    println "Unit test"
}
task uiTest << {
    println "UI test"
}
task clean << {
    println "Clean"
}
  1. 可以使用Task的dependsOn(Object... paths) method來指定依賴關係。例如 ,unitTest依賴於compile。
unitTest.dependsOn compile

執行gradle unitTest -q會輸出如下結果。

Compiled
Unit test
  1. Gradle中的task之間的關係可以用有向無環圖(DAG)來表示。任務之間不能互相依賴,否則Gradle會報錯。
unitTest.dependsOn compile
compile.dependsOn unitTest

執行gradle unitTest會報錯Circular dependency

  1. 沒有依賴關係的任務之間可以通過mustRunAfter()finalizedBy()等method來指定任務的執行順序。舉例如下:uiTest和unitTest都依賴於compile,那麼如何保證uiTest總是在unitTest之後執行呢?答案就是使用mustRunAfter()
uiTest.mustRunAfter unitTest

執行gradle uiTest unitTest -q會輸出如下結果,說明unitTest是在uiTest之前執行的。

Compiled
Unit test
UI test

相關文章