Gradle:任务失败时的自定义消息?
我想连接到compileJava目标,并在失败时发出额外的自定义消息。我们有一个非常常见的案例设置案例,很多人都忽略了它,只有在失败的情况下,它才是有用的,能够执行以下操作:Gradle:任务失败时的自定义消息?,gradle,Gradle,我想连接到compileJava目标,并在失败时发出额外的自定义消息。我们有一个非常常见的案例设置案例,很多人都忽略了它,只有在失败的情况下,它才是有用的,能够执行以下操作: compileJava.onFailure { println "Did you configure your wampfrankle to talk to the slackometer?" } 我的谷歌技能还没有找到答案 该错误是一个依赖性错误,正如Rene指出的,需要在构建执行后检测,而不是在项目评估后检
compileJava.onFailure {
println "Did you configure your wampfrankle to talk to the slackometer?"
}
我的谷歌技能还没有找到答案 该错误是一个依赖性错误,正如Rene指出的,需要在构建执行后检测,而不是在项目评估后检测 在这里,我添加了一个对buildFinished的调用,其中包含一个闭包,用于检测是否发生了故障,并打印出一条错误消息
project.gradle.buildFinished { buildResult ->
if (buildResult.getFailure() != null) {
println "Did you configure your wampfrankle to talk to the slackometer?"
}
}
为了测试这一点,我强制使用此伪依赖项解决依赖项故障:
dependencies {
compile 'foo:bar:baz'
}
对仅在第一个任务失败时才执行的任务使用
finalizedBy
。例如:
tasks.compileJava.finalizedBy('compileJavaOnFailure')
task compileJavaOnFailure {
doLast {
println 'Did you configure your wampfrankle to talk to the slackometer?'
}
onlyIf {
tasks.compileJava.state.failure != null
}
}
不幸的是,在本例中失败为“null”。这个失败实际上是解决依赖关系的失败,所以也许这就是原因。但是,我还没有弄清楚如何连接到依赖项解决成功/失败。在项目构建之后,afterProject不会被触发。您可能需要检查project.gradle.buildFinished。这个钩子在构建完成时被调用,你可以检查任务的状态来收集额外的信息。你可以贴出来回答,或者我会在测试后更正这个答案。非常接近。buildFinished因为失败的“compileJava”任务被多次调用,我不知道为什么。也许对于每个可传递依赖项?啊,每个子项目都会调用buildFinished(),即使我只构建其中一个子项目。至少,我认为这就是调用次数匹配的原因,即使BuildResult对象中没有任何东西指示它用于哪个项目。