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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,107评论 19 139
  • 前言 学习gradle这个想法在我开始使用AndroidStudio之后就有了,基本上每个开始使用AndroidS...
    AnAppleADie阅读 3,655评论 2 19
  • 导语: 随着技术的发展,不管是前端开发、服务端开发或者是移动端开发(移动也是前端的一个分支)中都会用到自动化构建工...
    伊始雨深阅读 3,063评论 0 4
  • Gradle对于很多开发者来说有一种既熟悉又陌生的感觉,他是离我们那么近,以至于我每天做项目都需要他,但是他又是离...
    阿_希爸阅读 9,619评论 10 199
  • 1、个人价值的体现 差异化因素才是你的价值所在。差异化在所在的行业中越明显,你的个人竞争力也就越强,可替代性也就会...
    好听的暖阳阅读 166评论 1 4