gradle - 最好在 Gradle 中使用任务依赖项或 task.doLast 吗?

标签 gradle build.gradle

使用 Gradle 构建我的最终输出文件后,我想做两件事。更新本地 version.properties 文件并将最终输出 final 复制到某个特定目录以进行存档。假设我已经实现了 2 个方法,它们完全符合我刚刚描述的功能,updateVersionProperties()archiveOutputFile() .

我知道想知道什么是最好的方法来做到这一点......

备选方案 A:

assembleRelease.doLast {
    updateVersionProperties()
    archiveOutputFile()
}

备选方案 B:
task myBuildTask(dependsOn: assembleRelease) << {
    updateVersionProperties()
    archiveOutputFile()
}

在这里我会调用 myBuildTask 而不是 组装发布 就像在选项 A 中一样。

哪一种是推荐的这样做的方法,为什么?一个比另一个有什么优势吗?想澄清一下... :)

最佳答案

只要有可能,将新事件建模为单独的任务。 (在您的情况下,您可能会再添加两个任务。)这有很多优点:

  • 关于当前正在执行或失败的事件的更好反馈
  • 能够声明任务输入和输出(获得由此带来的所有好处)
  • 能够重用现有任务类型
  • Gradle 并行执行任务的更多可能性

  • 有时,将事件建模为单独的任务并不容易。 (一个例子是当需要就地对现有任务的输出进行后处理时。在单独的任务中执行此操作将导致原始任务在后续运行中永远不会是 up-to-date。)只有这样才能附加事件使用 doLast 到现有任务.

    关于gradle - 最好在 Gradle 中使用任务依赖项或 task.doLast 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17438219/

    相关文章:

    android - Jenkins 未能找到目标 android-19

    java - Spring boot 构建变体 使用 gradle 的配置文件特定属性

    android - Gradle:错误:多个库的包名称为 'com.google.android.gms'

    gradle任务独立压缩多个目录

    java - 告诉 gradle 包含同一工作区中的 Eclipse 项目

    gradle - 如何仅在build.gradle中执行特定任务?

    gradle - 无法创建 gradle 插件扩展的实例

    maven - Gradle 相当于 maven-dependency-plugin

    android - 项目清理错误

    android - 克隆现有的 Android Studio 项目