【问题标题】:gradle - cleanup after task complete with dependsOngradle - 使用dependsOn完成任务后的清理
【发布时间】:2019-05-17 17:25:16
【问题描述】:

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

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,还是以任何其他方式来实现这一点?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    您可以创建一个专门的“清理”任务来处理文件删除,并使taskAtaskB 这两个任务由该任务@987654323 完成 @:

    task cleanup{
        doLast{
            // DELETE the file
        }
    }
    
    taskA.finalizedBy cleanup
    taskB.finalizedBy cleanup
    

    这样,文件将始终被删除,无论您运行任务 A 还是 B。这将确保在任务 cleanup 删除文件之前执行 taskB

    【讨论】:

    • 感谢您的快速回答。工作真棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多