我正在使用axion gradle插件,我的目标是测试是否已执行 createRelease 任务。如果是这样,我想编辑我的项目所依赖的变量。如何测试gradle任务是否已成功执行。我尝试了 onlyIf 谓词,并测试它是否非空但是,后者只测试任务是否存在而不是运行。
我想在 ext 关闭中运行此测试。
答案 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
}
}