考虑一个Gradle插件,该插件向项目添加了三个任务-一个buildZip
任务(用于创建该项目的可分发zip),一个publishZip
任务(用于将该邮政编码发布到共享存储库),以及一个cleanZip
任务(用于清理该zip的任何本地版本)。对于本地开发,将经常使用cleanZip buildZip
,但是自动构建系统将运行buildZip publishZip cleanZip
。
使用此插件的项目之一希望使用Gradle的parallel
标志运行其构建,以允许并行构建项目的不同部分。不幸的是,这会带来zip任务的问题-buildZip
取决于实际构建的项目,但是cleanZip
没有任何依赖关系,因此它可以立即运行,从而导致自动构建系统无法清理。
声明这些任务之间的任何依赖关系不是一个好主意,因为它们应该能够独立运行。另外,我不能指定mustRunAfter
(至少在buildZip
和cleanZip
之间),因为有时清洁应该首先出现,而构建应该首先出现。
我该如何告诉Gradle执行这些任务的顺序,以--parallel
遵守的方式执行,而不是硬编码为始终始终运行特定的任务?
最佳答案
您可以做的是:检测gradle是否使用--parallel
运行,并基于此配置任务之间的依赖关系。可以通过以下方式完成:
println project.gradle.startParameter.parallelProjectExecutionEnabled
关于gradle - 在Gradle中有条件地排序任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38777972/