考虑一个Gradle插件,它为项目添加三个任务 - 一个buildZip
任务用于创建项目的可分发zip,一个publishZip
任务用于将该zip发布到共享存储库,以及一个{ {1}}任务清理zip的任何本地版本。对于本地开发,将经常使用cleanZip
,但自动构建系统将运行cleanZip buildZip
。
使用此插件的其中一个项目希望使用Gradle的buildZip publishZip cleanZip
标志运行其构建,以允许项目的不同部分并行构建。不幸的是,这遇到了zip任务的问题 - parallel
取决于项目实际构建,但buildZip
没有任何依赖关系,所以它可以立即运行,导致自动构建系统无法清理。
声明这些任务之间的任何依赖关系并不是一个好主意,因为它们应该能够单独运行。另外,我无法指定cleanZip
(至少在mustRunAfter
和buildZip
之间),因为有时候应该是第一个,有时候应该是第一个。
我如何告诉Gradle运行这些任务的顺序是什么,以cleanZip
为荣,并且没有硬编码让特定的一个总是在另一个之前运行?
答案 0 :(得分:0)
您可以做的是:检测gradle是否与--parallel
一起运行,并基于此配置任务之间的依赖关系。它可以通过以下方式完成:
println project.gradle.startParameter.parallelProjectExecutionEnabled