在 Gradle 中对任务进行有条件排序



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

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

声明这些任务之间的任何依赖关系不是一个好主意,因为它们应该能够单独运行。另外,我不能指定mustRunAfter(至少在 buildZipcleanZip 之间(,因为有时干净应该是第一位的,有时构建应该是第一位的。

我怎样才能告诉 Gradle 以什么顺序运行这些任务,以一种--parallel尊重的方式,而不是硬编码为让一个特定的任务总是先于另一个运行?

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

println project.gradle.startParameter.parallelProjectExecutionEnabled

最新更新