gradle - 如何让Gradle任务依赖于另一个任务,但如果另一个任务执行则不重新执行?

标签 gradle

我想拥有一个Gradle任务taskA,以触发另一个任务taskB的执行(如果两个都不都是最新的),但是如果仅taskB不存在,则taskA的执行不应触发taskB的执行最新。如何才能做到这一点?

IOW,这里涉及任务依赖关系的两个部分,即任务层次结构和最新检查。我希望能够设置任务层次结构,但又不能暗示它是taskA的最新检查。

上下文:如果taskA的输入发生更改,或者taskB在开发机(即非CI)上执行,则必须执行。如果不是最新的taskB,则必须执行。这是因为taskB的输出是由taskA运行的可执行文件。如果仅更新可执行文件,就不应该运行taskA的原因是,更新后的可执行文件可以产生与前一个可执行文件不同的输出。新的输出可能导致构建的其他部分出现问题。由于输出的目的是帮助确保用户遵循最佳实践,因此可以在CI构建中忽略更新的可执行文件的新输出。

更具体地说,taskA调用protolock输出的 taskB 二进制文件。 taskA输出工程师应提交的proto.lock文件。自动提交该文件可能会使工程师感到意外,并破坏这些检查的目的。

最佳答案

使用onlyIf:

taskB.onlyIf {
  trueIffNotCiOrInputsAreNewerThanOutput()
}

关于gradle - 如何让Gradle任务依赖于另一个任务,但如果另一个任务执行则不重新执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234518/

相关文章:

Selenium 启动旧的 chromedriver 版本

gradle - 如何使用 gradle 将依赖项添加到非 gradle 项目?

android - 修改gradle中的所有flavor .class

android - 无法同步gradle

android - Android风格签名无法正常工作

java - 在 Android 中使用 build.gradle 将 translatable=false 添加到 String 资源?

java - 如何将 Gradle Proguard 插件用作 Maven 存储库依赖项? (不引用本地文件夹。)

android - 使用Closure整理Gradle依赖项

gradle - 从gradle的子项目中引用外部项目

java - 成功的 Gradle 项目构建在运行时会产生 NoClassDefFoundError