gpt4 book ai didi

Gradle - StopExecutionException 不会改变 TaskStatus

转载 作者:行者123 更新时间:2023-12-02 01:44:58 26 4
gpt4 key购买 nike

我有三个 gradle 任务:A、B 和 B2。它们以下列方式相互依赖:A <- B <- B2(意思是 B 依赖于 A,B2 依赖于 B)。这是我的代码:

task A {
println "Exec A"
}

task B(dependsOn: A) << {
throw new StopExecutionException("skip this task") // this exception prevents the println, but doesn't change the TaskStatus of B
println "Exec B"
}

task B2(dependsOn: B) << {
println "Did work: " + B.getState().getDidWork();
println "Exec: " + B.getState().getExecuted();
println "Failure: " + B.getState().getFailure();
println "Skip message: " + B.getState().getSkipMessage();
println "Skipped: " + B.getState().getSkipped();

println "Exec B2"
}

当我执行此操作时(通过运行 gralde -q B2),我得到以下输出:

> gralde -q B2
Exec A
Did work: true
Exec: true
Failure: null
Skip message: null
Skipped: false
Exec B2

可以看出,尽管 StopExecutionException 被正确抛出,但 TaskState 的属性没有改变。我如何确定任务中所有以前的任务是否已完全执行?

最佳答案

StopExecutionException 只是完成任务执行的快捷方式。如果抛出任务,任务不会失败,您可以在 documentation 中读到任务也没有被跳过。您可以抛出 GradleException 使任务失败,然后后续任务将能够检查结果。请注意,您需要更改 B2 以使其成为 B 的最终任务(请参阅 here )或使用 runAfter 或类似的东西。

关于Gradle - StopExecutionException 不会改变 TaskStatus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26178327/

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