首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle Exec块不会将standardOutput重定向到给定的输出流

Gradle Exec块不会将standardOutput重定向到给定的输出流
EN

Stack Overflow用户
提问于 2018-11-23 02:03:18
回答 1查看 2.4K关注 0票数 1

我有这样的街区:

代码语言:javascript
复制
task print() {
    doLast {
        println("stop-1")
        println(getJavaVersion())
        println("stop-3")
    }
}

def getJavaVersion() {
    def out = new ByteArrayOutputStream()
    exec {
        workingDir 'C:/Program Files/Java/jdk1.7.0_80/bin'
        commandLine 'cmd', '/c', 'java', '-version'
        standardOutput = out
    }

    println 'stop-2'
    return out.toString()
}

我希望输出将在print任务的print块中打印,但它是在exec块之后打印的。

这是输出:

代码语言:javascript
复制
Executing tasks: [print]

Parallel execution with configuration on demand is an incubating feature.

> Task :gcUnicorn-core:print
stop-1
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
stop-2

stop-3

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

如您所见,输出流是空的。

我查阅了Gradle的文档和我找到的许多例子,但是没有办法解决这个问题。

级别: 4.10.2,Windows: 7,jdk1.8.0_192

谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-23 08:26:23

实际上,java -version将消息打印到标准错误而不是标准输出(stdout),因此尝试:

代码语言:javascript
复制
errorOutput = out
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53439846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档