【发布时间】:2016-08-04 21:50:01
【问题描述】:
考虑一个向项目添加三个任务的 Gradle 插件 - 一个 buildZip 任务用于创建项目的可分发 zip,一个 publishZip 任务将该 zip 发布到共享存储库,以及一个 cleanZip 任务用于清理任何本地版本的 zip。对于本地开发,会经常使用cleanZip buildZip,但自动构建系统会运行buildZip publishZip cleanZip。
使用此插件的项目之一希望使用 Gradle 的 parallel 标志运行其构建,以允许并行构建项目的不同部分。不幸的是,这遇到了 zip 任务的问题 - buildZip 取决于实际构建的项目,但 cleanZip 没有任何依赖项,因此它可以立即运行,导致自动构建系统无法清理起来。
声明这些任务之间的任何依赖关系不是一个好主意,因为它们应该能够单独运行。另外,我不能指定mustRunAfter(至少在buildZip 和cleanZip 之间),因为有时应该首先清理,有时应该首先构建。
我如何告诉 Gradle 以什么顺序运行这些任务,这种方式将被 --parallel 尊重,并且不会硬编码为让特定任务始终先于另一个运行?
【问题讨论】:
标签: gradle gradle-plugin