gradle-任务完成后使用dependsOn进行清理

时间:2018-12-17 10:49:35

标签: gradle

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

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或以其他方式实现此目的?

1 个答案:

答案 0 :(得分:2)

您可以创建一个专用的“清理”任务来处理文件删除操作,并使任务taskAtaskB 完成 此任务cleanup

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

taskA.finalizedBy cleanup
taskB.finalizedBy cleanup

通过这种方式,运行taks A或B都将始终删除文件。这将确保在任务taskB删除文件之前也执行cleanup