gpt4 book ai didi

依赖于失败的 Gradle 任务

转载 作者:行者123 更新时间:2023-12-01 00:47:39 25 4
gpt4 key购买 nike

一个 gradle 任务可以依赖于另一个任务的失败吗?

例如,我有一个在浏览器中打开测试报告的辅助任务。我希望报告仅在任务“测试”失败时出现,而不是像现在这样在所有测试都通过时出现。

task viewTestReport(dependsOn: 'test') << {
def testReport = project.testReportDir.toString() + "/index.html"
"powershell ii \"$testReport\"".execute()
}

最佳答案

您可以尝试设置任务的finilizedBy属性(property),如:

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 的用户指南中找到解释 in chapter 14.11 "Finalizer tasks" .不久,由于文档:

Finalizer tasks will be executed even if the finalized task fails.



因此,您只需要使用 TaskState 检查已完成任务的状态即可。如果它失败了,做你想做的。

更新:
不幸的是,因为配置总是对所有任务执行,似乎不可能创建一些自定义任务来设置标志以在脚本中显示报告。在执行阶段也是不可能的,因为如果预览运行的任务失败,则不会调用该任务。但是你可以做你想做的,提供构建脚本参数,比如:
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

在任何情况下都不会显示报告。

关于依赖于失败的 Gradle 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com