在Gradle exec任务中抑制交互式输出

时间:2016-01-13 12:07:09

标签: gradle docker

当命令更新文本时,某些Gradle Exec任务会产生过多的输出。

从终端运行时,这些命令会产生几行输出,并在适当的位置更新。

从Gradle内部运行时,每次更新某些内容时,它们都会产生一个新的输出行,例如:

docker build

task dockerBuild(type: Exec) {
    commandLine 'docker', 'build', '-t', 'foo', '.'
}

运行时产生:

Sending build context to Docker daemon 557.1 kB
Sending build context to Docker daemon 1.114 MB
Sending build context to Docker daemon 1.646 MB
Sending build context to Docker daemon  2.17 MB
Sending build context to Docker daemon  2.72 MB
Sending build context to Docker daemon 3.277 MB
Sending build context to Docker daemon 3.834 MB
Sending build context to Docker daemon 4.391 MB
... hundreds more lines ...

wget的

task fetchData(type: Exec) {
    commandLine 'wget', 'http://example.org/some/large/file'
}

运行时输出:

HTTP request sent, awaiting response... 200 OK
Length: 209715200 (200M) [application/zip]
Saving to: '200MB.zip'

  0K .......... .......... .......... .......... ..........  0% 5.02M 40s
 50K .......... .......... .......... .......... ..........  0% 6.34M 36s
100K .......... .......... .......... .......... ..........  0% 6.68M 34s
150K .......... .......... .......... .......... ..........  0% 6.42M 33s
200K .......... .......... .......... .......... ..........  0% 6.41M 33s
250K .......... .......... .......... .......... ..........  0% 7.12M 32s
... thousands more lines ...

这是我可以在Gradle中修复的任何内容(例如,要求它以非交互模式执行命令),还是单个应用程序提供禁用此类输出的标志?

1 个答案:

答案 0 :(得分:1)

Exec DSL documentation,您可以将可执行文件的输出重定向到您自己的流。

//store the output instead of printing to the console:
standardOutput = new ByteArrayOutputStream()

您也可以选择重定向错误流以使其保持完全安静,但通过保持原样,您可以在gradle日志中看到任何退出错误。