确保Gradle任务始终运行,而不考虑依赖项的结果
如何确保下游“验证”任务即使在构建任务抛出可怕错误时也能执行 我希望所有这些可能的流程都成为可能:确保Gradle任务始终运行,而不考虑依赖项的结果,gradle,dependencies,Gradle,Dependencies,如何确保下游“验证”任务即使在构建任务抛出可怕错误时也能执行 我希望所有这些可能的流程都成为可能: 构建->测试->验证 生成(错误)->验证 构建->测试(错误)->验证 我发现,GradleException和TaskExecutionException会导致一个句号,不再执行任务,StopActionException不会阻止测试执行 示例代码: task build(){ doFirst() { println "building..." throw new Gr
- 构建->测试->验证
- 生成(错误)->验证
- 构建->测试(错误)->验证
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)
在这种情况下,“构建”和“测试”都需要由“验证”完成。不幸的是,如果“构建”或“测试”失败,“构建计划”任务将不会执行,因此“验证”任务将永远不会运行。有人知道这是否会遗漏构建步骤吗 如果我在每个任务上使用一个具有自己的try-catch和call-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)
这很不幸,因为我希望验证在测试之后运行,而不是在构建和测试之间运行。我想,我需要詹金斯或其他什么来执行任务。或者我可以让一个任务在一个带有finally子句的try catch中运行build、test,“validate”任务将在“test”之后运行。一个任务不能运行多次,因此,如果同一个任务完成了两个任务,它将在两个任务之后运行。