测试是否执行gradle任务

lnxxn5zx  于 2023-04-06  发布在  其他
关注(0)|答案(2)|浏览(157)

我正在使用axion gradle插件,我的目标是测试createRelease任务是否已经执行。如果是,我想编辑我的项目依赖的变量。我如何测试gradle任务是否已经成功执行。我尝试了onlyIf predicate 并测试它是否not null,但后者只测试任务是否存在,而不是是否运行。
我想在ext闭包中运行此测试。

44u64gxh

44u64gxh1#

每个Gradle任务都提供了一个TaskState,它提供了您所需的信息:

task a { }

task b {
    onlyIf { a.state.executed }
}

你也可以使用a.state.didWork(或a.didWork),如果你想检查任务是否真的做了一些事情(例如Copy任务)。

**编辑:**我刚刚注意到,你提到在插件中使用此功能。此用例的一个示例:

project.gradle.buildFinished {
    if (project.tasks['myTask'].state.executed) {
        // do something
    }
}
uhry853o

uhry853o2#

您需要注册一个在任务事件时通知的监听器,例如使用gradle.taskGraph.afterTask { if (it == createRelease) { /* do stuff */ } }。但您不应该在该监听器中更改Gradle配置。您应该只在配置阶段更改配置。该监听器当然在执行阶段运行。
在这种情况下,您应该改变策略,例如执行gradle.taskGraph.whenReady { if (it.hasTask(createRelease)) { /* do stuff */ } }whenReady是在配置阶段完成的,因此您仍然可以配置任务等。因此,如果createRelease任务将作为当前Gradle执行的一部分运行,则可以使用这一行。

相关问题