当前位置: 首页 > 知识库问答 >
问题:

Gradle exec 任务返回非零退出值并使构建失败,但我不想失败,而是执行另一个任务

宿楚青
2023-03-14

我以一种非常默认的方式设置了一个exec任务,例如:

task myTask(type:Exec) {

    workingDir '.'

    commandLine './myscript.sh'

    doLast {
        if(execResult == 0) {
           //one thing
        } else {
           //another thing
        }
    }
}

但不幸的是,当脚本抛出错误时,它从不执行doLast块。相反,它跳过了这一点,并在整个构建中失败

任务执行失败:项目:myTask。处理“命令”。/myscript.sh“”以非零退出值1结束

这对我来说毫无用处。myscript.sh 以非零退出值结束的整个想法是,这样我就可以执行一些代码来响应它。我需要做些什么才能不使构建失败,而是捕获结果并执行响应操作?感谢您的帮助!

共有2个答案

孟彦
2023-03-14

如果<code>ignoreExitValue</code>答案不起作用,另一种解决方案是用<code>try{…}catch(异常e){…}</code>环绕<code〉命令行</code>。

郑哲彦
2023-03-14

TL;DR - 使用 ignoreExitValue = true

大概读到文档第五十遍的时候,终于看到有一个属性,ignoreExitValue,默认为false。但是如果将它设置为true,那么您可以在doLast块中执行自己的任务。

task myTask(type:Exec) {

    workingDir '.'

    commandLine './myscript.sh'

    ignoreExitValue true

    doLast {
        if(execResult.getExitValue() == 0) {
           //one thing
        } else {
           //another thing
        }
    }
}
 类似资料: