gradle - 在Gradle中有条件地排序任务

标签 gradle gradle-plugin

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

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

声明这些任务之间的任何依赖关系不是一个好主意,因为它们应该能够独立运行。另外,我不能指定mustRunAfter(至少在buildZipcleanZip之间),因为有时清洁应该首先出现,而构建应该首先出现。

我该如何告诉Gradle执行这些任务的顺序,以--parallel遵守的方式执行,而不是硬编码为始终始终运行特定的任务?

最佳答案

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

println project.gradle.startParameter.parallelProjectExecutionEnabled

关于gradle - 在Gradle中有条件地排序任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38777972/

相关文章:

java - Java如何获取gradle依赖

Android Material 和 appcompat Manifest 合并失败

android - 无法在Android Studio中运行应用

android - 在 Android Studio 中添加(外部)本地库项目作为依赖项

android - 我可以不使用命令行而仅出于某些口味禁用R8吗?

android - 无法合并dex Android

gradle - 如何使用 Kotlin 将导入的插件整合到 Gradle 中的自定义插件

gradle - 评估后测试自定义 Gradle 插件

gradle - 没有为gradle节点插件 'command'属性指定值

android - 我无法使用android studio建立第一个空项目