即使构建任务引发了可怕的错误,我如何确保下游“验证”任务仍然执行?
我希望所有这些可能的流程都成为可能:
我发现 GradleException 和 TaskExecutionException 导致完全停止而没有进一步执行任务, StopActionException 不会阻止测试执行。
示例代码:
task build(){
doFirst() {
println "building..."
throw new GradleException("Gradle exc")
}
}
task test(){
mustRunAfter 'build'
doFirst() {
println "testing..."
}
}
task validate() {
doFirst() {
println "validating..."
}
}
task buildPlan(dependsOn:[build,test]) {}
buildPlan.finalizedBy(validate)
答案 0 :(得分:3)
在这种情况下,' build'和'测试'需要finalizedBy
'验证'。 ' buildPlan'遗憾的是,如果任何一个“建立”任务,它将被执行。或者'测试'因此无法验证'任务永远不会运行。
答案 1 :(得分:0)
任何人都知道这是否会遗漏构建步骤?
如果我使用自己的try catch任务并在每个任务上调用execute,那么它可以按我的意愿工作。
task build(){
doFirst() {
println "building..."
throw new GradleException("Gradle exc")
}
}
task test(){
mustRunAfter 'build'
doFirst() {
println "testing..."
}
}
task validate() {
doFirst() {
println "validating..."
}
}
// Validate Called Reliably
task buildWithCatch {
doFirst {
try {
build.execute()
test.execute()
}
finally {
validate.execute()
}
}
}
// Validate Never Called
task buildPlan(dependsOn:[build,test]) {}
buildPlan.finalizedBy(validate)