一个 Gradle 任务可以依赖于另一个任务的失败吗?
例如,我有一个辅助任务,在浏览器中打开测试报告。我希望报告仅在任务“测试”失败时出现,而不是像现在一样在所有测试都通过时出现。
task viewTestReport(dependsOn: 'test') << {
def testReport = project.testReportDir.toString() + "/index.html"
"powershell ii \"$testReport\"".execute()
}
您可以尝试设置任务finilizedBy
财产,如:
task taskX << {
throw new GradleException('This task fails!');
}
task taskY << {
if (taskX.state.failure != null) {
//here is what shoud be executed if taskX fails
println 'taskX was failed!'
}
}
taskX.finalizedBy taskY
你可以找到gradle的用户指南的解释在第 14.11 章“终结器任务”中 https://docs.gradle.org/2.7/userguide/more_about_tasks.html#N10F3E。不久,由于文档:
即使终结任务失败,终结器任务也会被执行。
因此,您只需检查已完成任务的状态任务状态 https://docs.gradle.org/2.7/javadoc/org/gradle/api/tasks/TaskState.html如果失败了,就做你想做的事。
Update:不幸的是,由于配置始终针对所有任务执行,因此似乎无法创建某些自定义任务来设置标志以在脚本中显示报告。在执行阶段也是不可能的,因为如果预览运行的任务失败,则不会调用该任务。但是您可以做您想做的事情,提供构建脚本参数,例如:
task viewTestReport << {
if (project.hasProperty("showReport") && test.state.failure != null) {
//here is what shoud be executed on taskX fail
println 'test was failed!'
}
}
test.finalizedBy(viewTestReport)
在这种情况下,您必须提供-PshowReport
参数,当您调用任何 gradle 任务时,如果您想在测试任务失败时获取报告。例如,如果您致电:
gradle test -PshowReport
如果测试任务失败,则将显示报告,但如果您调用它:
gradle test
在任何情况下都不会显示任何报告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)