在上一篇文章中我们介绍了如何自定义简单的任务。本文将通过如下四个简单任务来说明任务之间的依赖关系。
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
执行gradle unitTest -q
会输出如下结果。
Compiled
Unit test
- Gradle中的task之间的关系可以用有向无环图(DAG)来表示。任务之间不能互相依赖,否则Gradle会报错。
unitTest.dependsOn compile
compile.dependsOn unitTest
执行gradle unitTest
会报错Circular dependency
。
- 没有依赖关系的任务之间可以通过
mustRunAfter()
、finalizedBy()
等method来指定任务的执行顺序。举例如下:uiTest和unitTest都依赖于compile,那么如何保证uiTest总是在unitTest之后执行呢?答案就是使用mustRunAfter()
。
uiTest.mustRunAfter unitTest
执行gradle uiTest unitTest -q
会输出如下结果,说明unitTest是在uiTest之前运行的。
Compiled
Unit test
UI test