我正在执行一个非常简单的Gradle任务。
哪个运行Yarn命令-yarn_test哪个运行硒测试。
我正在使用com.moowork.gradle:gradle-node-plugin:1.2.0插件来运行Yarn命令
我的任务看起来像-
task run_tests(type: YarnTask) {
try {
args = ['test']
}catch (all){
println('Tests failed!')
}}
在我的packge.json中,我有:
“ test”:“ mocha --timeout 25000 ./automation/test --reporter xunit-file”
即使我将其更改为以exec身份运行
executable "sh"
args "-c", "yarn test"
我遇到了同样的错误,所以插件无关,而是Gradle try-catch
即使一项测试都没有失败,为什么我要捕获异常。 但由于某种原因,它没有被抓住。
当我使用--stacktrace运行时,这就是我得到的-
error命令失败,退出代码为2。 信息请访问https://yarnpkg.com/en/docs/cli/run,以获取有关此命令的文档。
任务:run_tests失败 失败:构建失败,发生异常。 * 什么地方出了错: 任务':run_tests'的执行失败。 进程'命令'/DATA/build/workspace/build_build/.gradle/yarn/yarn-yarn-v1.3.2/bin/yarn''完成,退出值非零 *尝试: 使用--info或--debug选项运行以获取更多日志输出。与--scan一起运行以获取完整的见解。 *例外是: org.gradle.api.tasks.TaskExecutionException:任务':run_tests'的执行失败。
我想念什么?
我只想打印一些错误,然后完成构建..但没有例外吗?!
Gradle 4.7,在具有Gradle包装器的Ubuntu上运行。
谢谢
编辑
即使我只跑
sh: exit 1
我得到了相同的结果,所以必须是使用gradle try-catch而不是使用纱线ormocha等
答案 0 :(得分:0)
问题在于您的try
/ catch
涉及的是配置 Gradle构建阶段,而不是执行阶段。 here涵盖了整个gradle构建生命周期,但是在答案的结尾,我将包括每个阶段的基本描述。
looks like YarnTask
支持ignoreExitValue
属性,因此您至少应该能够执行以下操作:
task run_tests(type: YarnTask) {
args = ['test']
ignoreExitValue = true
}
只是忽略结果;我认为您可以使其更加复杂,例如:
task run_tests(type: YarnTask) {
args = ['test']
ignoreExitValue = true
doLast {
if(result.getExitValue() != 0){
println "Tests failed!"
}
}
}
doLast
操作将在任务的所有定义操作完成后执行(例如,在运行测试之后)。
Gradle Build Lifecycle(非常简短的版本)的阶段: