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

时间:2013-07-03 01:08:47

标签: gradle build.gradle

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

我知道想知道最好的方法是什么......

备选方案A:

assembleRelease.doLast {
    updateVersionProperties()
    archiveOutputFile()
}

备选方案B:

task myBuildTask(dependsOn: assembleRelease) << {
    updateVersionProperties()
    archiveOutputFile()
}

在这里,我将调用 myBuildTask 而不是 assembleRelease ,如替代A中那样。

推荐哪种方法可以做到这一点,为什么?一个优于另一个有什么优势吗?想要澄清一下......:)

1 个答案:

答案 0 :(得分:13)

只要您可以,将新活动建模为单独的任务。 (在您的情况下,您可以添加两个更多任务。)这有许多优点:

  • 更好地反馈当前正在执行或失败的活动
  • 能够声明任务输入和输出(从中获得所有好处)
  • 重用现有任务类型的能力
  • Gradle并行执行任务的更多可能性

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