我有两个自定义任务,例如-
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或以其他方式实现此目的?
答案 0 :(得分:2)
您可以创建一个专用的“清理”任务来处理文件删除操作,并使任务taskA
和taskB
被 完成 此任务cleanup
:
task cleanup{
doLast{
// DELETE the file
}
}
taskA.finalizedBy cleanup
taskB.finalizedBy cleanup
通过这种方式,运行taks A或B都将始终删除文件。这将确保在任务taskB
删除文件之前也执行cleanup
。