如何仅在生成失败后在gradle中执行任务
我在biuld.gradle中有以下代码:如何仅在生成失败后在gradle中执行任务,gradle,allure,Gradle,Allure,我在biuld.gradle中有以下代码: task generateReport(type: Exec){ onlyIf{ project.getState().failure } doLast{ executable "generateReport.bat" } } tasks.withType(Test)*.finalizedBy generateReport 我以前试过: task generateReport(type
task generateReport(type: Exec){
onlyIf{
project.getState().failure
}
doLast{
executable "generateReport.bat"
}
}
tasks.withType(Test)*.finalizedBy generateReport
我以前试过:
task generateReport(type: Exec){
executable "generateReport.bat"
}
tasks.withType(Test)*.finalizedBy generateReport
gradle.afterProject {project, projectState ->
if (projectState.failure) {
doLast{
generateReport
}
}
}
还有其他的例子,但都没用
我做错了什么?您需要连接到
buildFinished
生命周期事件,如下所示:
gradle.buildFinished { buildResult ->
if (buildResult.failure) {
println "Build Failed!"
} else {
println "Build Succeeded!"
}
}
您需要钩住
buildFinished
生命周期事件,如下所示:
gradle.buildFinished { buildResult ->
if (buildResult.failure) {
println "Build Failed!"
} else {
println "Build Succeeded!"
}
}
Project.state
是项目的评估状态,而不是某些执行状态。如果要在生成失败时执行某些操作,则应执行gradle.addBuildListener()
,并在BuildListener
中实现方法buildFinished()
,在该方法中可以检查result.failure
以查看生成是否失败。如果您想为每个失败的测试测试执行一些操作,您应该改为使用gradle.addListener()
,并为其提供一个TestListener
的实现,您可以在其中对失败的测试或测试套件执行操作。或者,您也可以使用testTask.addTestListener()
将测试侦听器仅添加到特定的测试任务。或者,为了更好,您可以执行testTask.afterTest{…}
或testTask.afterSuite{…}
项目。状态
是项目的评估状态,而不是某些执行状态。如果要在生成失败时执行某些操作,则应执行gradle.addBuildListener()
,并在BuildListener
中实现方法buildFinished()
,在该方法中可以检查result.failure
以查看生成是否失败。如果您想为每个失败的测试测试执行一些操作,您应该改为使用gradle.addListener()
,并为其提供一个TestListener
的实现,您可以在其中对失败的测试或测试套件执行操作。或者,您也可以使用testTask.addTestListener()
将测试侦听器仅添加到特定的测试任务。或者,为了更好地使用它,您可以使用testTask.afterTest{…}
或testTask.afterSuite{…}
首先,您必须使用BuildListener
,正如其他答案中已经提到的那样。但还有一点需要注意的是,使用generateReport
,您不能以调用某个任务的方式调用它。因此,您必须在侦听器的闭包中使用一个exec
,如下所示:
gradle.buildFinished { buildResult ->
if (buildResult.failure) {
exec {
executable "generateReport.bat"
}
}
}
首先,您必须使用
BuildListener
,正如其他答案中已经提到的那样。但还有一点需要注意的是,使用generateReport
,您不能以调用某个任务的方式调用它。因此,您必须在侦听器的闭包中使用一个exec
,如下所示:
gradle.buildFinished { buildResult ->
if (buildResult.failure) {
exec {
executable "generateReport.bat"
}
}
}
事实上,你的例子不适用于执行任务,我把它绑在一起了。事实上,你的例子不适用于执行任务,我把它绑在一起了,你的例子真的很有帮助:)谢谢,你的例子真的很有帮助:)