Gradle的Task(2)任务间的依赖关系

在上一篇文章中我们介绍了如何自定义简单的任务。本文将通过如下四个简单任务来说明任务之间的依赖关系。

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

你可能感兴趣的:(Gradle的Task(2)任务间的依赖关系)