在Gradle

时间:2016-08-04 21:50:02

标签: gradle gradle-plugin

考虑一个Gradle插件,它为项目添加三个任务 - 一个buildZip任务用于创建项目的可分发zip,一个publishZip任务用于将该zip发布到共享存储库,以及一个{ {1}}任务清理zip的任何本地版本。对于本地开发,将经常使用cleanZip,但自动构建系统将运行cleanZip buildZip

使用此插件的其中一个项目希望使用Gradle的buildZip publishZip cleanZip标志运行其构建,以允许项目的不同部分并行构建。不幸的是,这遇到了zip任务的问题 - parallel取决于项目实际构建,但buildZip没有任何依赖关系,所以它可以立即运行,导致自动构建系统无法清理。

声明这些任务之间的任何依赖关系并不是一个好主意,因为它们应该能够单独运行。另外,我无法指定cleanZip(至少在mustRunAfterbuildZip之间),因为有时候应该是第一个,有时候应该是第一个。

我如何告诉Gradle运行这些任务的顺序是什么,以cleanZip为荣,并且没有硬编码让特定的一个总是在另一个之前运行?

1 个答案:

答案 0 :(得分:0)

您可以做的是:检测gradle是否与--parallel一起运行,并基于此配置任务之间的依赖关系。它可以通过以下方式完成:

println project.gradle.startParameter.parallelProjectExecutionEnabled