gradle exec:如何打印错误输出?

时间:2017-07-30 04:09:27

标签: gradle exec message

Gradle任务:启动服务

task startService(type: Exec) {
    standardOutput = new ByteArrayOutputStream()
    errorOutput = new ByteArrayOutputStream()

    commandLine 'cmd', '/c', 'net', 'start', 'serviceFoo'

    doLast {
        println standardOutput.toString()
        println errorOutput.toString()
    }

}

运行"net start serviceFoo“将在Windows上打印”拒绝访问“消息。 但是gradle startService,没有打印任何消息。

更新

在Windows命令提示符(admin)上尝试了它:

 commandLine 'net', 'start', 'serviceFoo'

错误讯息:

* What went wrong:
Execution failed for task ':startService'.
> Process 'command 'net'' finished with non-zero exit value 2

在命令提示符(admin)上:

 net start serviceFoo

成功。

1 个答案:

答案 0 :(得分:0)

默认情况下,Gradle将抛出异常,并在从命令接收非零结果代码时终止。您可以通过设置属性

来禁用它
ignoreExitValue true

在你的任务中。通常你也想自己检查一下,例如。

doLast {
  if (execResult.getExitValue() != 0) {
    ...
  }
}