测试是否执行gradle任务

时间:2017-10-06 15:10:31

标签: gradle

我正在使用axion gradle插件,我的目标是测试是否已执行 createRelease 任务。如果是这样,我想编辑我的项目所依赖的变量。如何测试gradle任务是否已成功执行。我尝试了 onlyIf 谓词,并测试它是否非空但是,后者只测试任务是否存在而不是运行。

我想在 ext 关闭中运行此测试。

2 个答案:

答案 0 :(得分:2)

您需要注册一个通知任务事件的监听器,例如: G。与gradle.taskGraph.afterTask { if (it == createRelease) { /* do stuff */ } }。但是您不应该在该侦听器中更改Gradle配置。您只应在配置阶段更改配置。该监听器当然是在执行阶段运行。

在这种情况下你应该改变策略,例如: G。做gradle.taskGraph.whenReady { if (it.hasTask(createRelease)) { /* do stuff */ } }whenReady在配置阶段完成,因此您仍然可以配置任务等。因此,如果createRelease任务将作为当前Gradle执行的一部分运行,那么使用该行就可以了。

答案 1 :(得分:0)

每个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
    }
}