我有两个自定义任务,例如-
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
最终确定为taskB
和cleanup
这两个任务:
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/