Kar*_*och 152 groovy build gradle
如何在检测到问题后停止Gradle构建?我可以使用断言,抛出异常,做一个System.exit(坏主意),或者在Gradle中使用专用函数(但我找不到).Gradle的最佳方式是什么(以及为什么?).
tim*_*tes 112
我通常会从org.gradle.api包中抛出相关的异常,例如InvalidUserDataException当有人输入无效的内容时,或者GradleScriptException更常见的错误.
如果你想停止当前的任务或动作,然后继续下一个,你也可以抛出一个 StopActionException
ski*_*ipy 78
如果要停止构建,请抛出:
throw new GradleException('error occurred')
Run Code Online (Sandbox Code Playgroud)
或抛出上述异常的子类.某些子类异常实际上只会使当前任务失败,而是继续构建.
Pet*_*ser 25
目前没有专门的方法,尽管已经讨论过添加一个方法.
停止Gradle构建的推荐方法是抛出异常.由于Groovy没有检查异常,并且默认情况下Gradle不打印异常类型,因此抛出哪个异常并不重要.在构建脚本中,经常使用GradleException,但Groovy断言似乎也是合理的(取决于环境和受众).重要的是提供明确的信息.添加原因(如果可用)有助于调试(--stacktrace).
Gradle提供专用的异常类型StopExecutionException/ StopActionException用于停止当前任务/任务操作但继续构建.
Gus*_*Gus 16
如果您以后不希望能够捕获异常,则另一个选择是调用ant fail任务.在我看来,它更容易阅读,您可以在不使用--stacktrace的情况下向用户发送一条好消息.
task (tarball, dependsOn: warAdmin) << {
ant.fail('The sky is falling!!')
}
Run Code Online (Sandbox Code Playgroud)
给你一条消息:
* What went wrong:
Execution failed for task ':tarball'.
> The sky is falling!!
Run Code Online (Sandbox Code Playgroud)
可能你可以捕获这个(也许它会抛出ant的BuildException?)但如果这是一个目标,那么我就不会使用ant.fail.我只是通过抛出标准的gradle异常(如tim_yates建议)来轻松查看要捕获的异常.
小智 11
抛出一个简单的GradleException就可以停止构建脚本.这非常适合检查所需的环境设置.
GradleException('your message, why the script is stopped.')
Run Code Online (Sandbox Code Playgroud)
例:
if(null == System.getenv()['GRADLE_USER_HOME']) {
throw new GradleException('Required GRADLE_USER_HOME environment variable not set.')
}
Run Code Online (Sandbox Code Playgroud)
这是一个尝试模拟 Gradle javac 任务如何抛出错误的代码片段:
task myCommand(type:Exec) {
... normal task setup ....
ignoreExitValue true
standardOutput = new ByteArrayOutputStream()
ext.output = { standardOutput.toString() }
doLast {
if (execResult.exitValue) {
logger.error(output())
throw new TaskExecutionException( it,
new Exception( "Command '${commandLine.join(' ')}' failed; "
+ "see task output for details." )
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当命令返回时0,没有输出。任何其他值都将打印标准输出并停止构建。
注意:如果您的命令也写入 errorOutput,您可能需要将其包含在错误日志中。
| 归档时间: |
|
| 查看次数: |
62373 次 |
| 最近记录: |