当前位置:  开发笔记 > 前端 > 正文

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

如何解决《Gradleexec任务返回非零退出值并使构建失败但我想不会失败而是执行另一个任务》经验,为你挑选了1个好方法。

我有一个非常默认的exec任务设置,如:

task myTask(type:Exec) {

    workingDir '.'

    commandLine './myscript.sh'

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

但不幸的是,当脚本抛出错误时,它永远不会执行doLast块.相反,它会跳过它并使整个构建失败

任务':project:myTask'的执行失败.进程'命令'./myscript.sh''以非零退出值1完成"

那对我来说没用.使用非零退出值完成myscript.sh的整个想法是这样我可以执行一些代码来响应它.我需要做什么才能使构建失败但捕获结果并执行响应操作?谢谢您的帮助!



1> Scott Shipp..:

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
        }
    }
}


如果有人需要它,execResult是Exec任务的属性之一.有关详细信息,请参阅https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html.
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有