我有两个自定义任务,例如-

task taskA(type: SomeTaskA) {
    ....
}
task taskB(type: SomeTaskB, dependsOn: 'taskA') {
    ....
}

taskA生成文件并对其执行一些操作。
taskB还对taskA生成的文件执行一些操作。
我可以分别运行两个任务。

我需要在gradle命令完成时删除该文件,即,如果我运行gradle taskA,则该文件将在taskA完成时删除,如果我运行gradle taskB,则该文件将在taskB完成时删除。

我可以通过添加doLast块并在其中添加删除逻辑来实现第一部分,但是当我运行taskB时,我没有文件可以执行操作(因为taskA doLast已经删除了该文件)。

那么在运行taskB时是否仍要停止taskA doLast或其他任何方式来实现此目的?

最佳答案

您可以创建一个专用的“清理”任务来处理文件删除,并通过将该任务taskA最终确定为taskBcleanup这两个任务:

task cleanup{
    doLast{
        // DELETE the file
    }
}

taskA.finalizedBy cleanup
taskB.finalizedBy cleanup

这样,运行taks A或B总是会删除文件。这将确保在任务taskB删除文件之前也执行cleanup

关于gradle - gradle-任务完成后使用dependsOn进行清理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53813629/

10-10 18:06