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

Ric*_*ral 12 gradle build.gradle

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

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

备选方案A:

assembleRelease.doLast {
    updateVersionProperties()
    archiveOutputFile()
}
Run Code Online (Sandbox Code Playgroud)

备选方案B:

task myBuildTask(dependsOn: assembleRelease) << {
    updateVersionProperties()
    archiveOutputFile()
}
Run Code Online (Sandbox Code Playgroud)

在这里,我将调用myBuildTask而不是assembleRelease,如替代A.

推荐哪种方式,为什么?一个优于另一个有什么优势吗?想请一些澄清... :)

Pet*_*ser 14

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

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

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

  • `myBuildTask.dependsOn(updateVersionProperties, archiveOutputFile); updateVersionProperties.dependsOn(assembleRelease); archiveOutputFile.dependsOn(assembleRelease)` (6认同)