【问题标题】:Conditionally ordering tasks in GradleGradle 中的有条件排序任务
【发布时间】:2016-08-04 21:50:01
【问题描述】:

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

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

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

我如何告诉 Gradle 以什么顺序运行这些任务,这种方式将被 --parallel 尊重,并且不会硬编码为让特定任务始终先于另一个运行?

【问题讨论】:

    标签: gradle gradle-plugin


    【解决方案1】:

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

    println project.gradle.startParameter.parallelProjectExecutionEnabled
    

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 2021-08-19
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多