Gradle Exec 块不会将 standardOutput 重定向到给定的输出流
Gradle Exec block doesn't redirect standardOutput to given output stream
我有这样的方块:
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
任务的 doLast
块内,但它是在 exec
块之后打印的。
这是输出:
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 的文档和我找到的许多示例,但没有运气解决它。
Gradle: 4.10.2, Windows: 7, jdk1.8.0_192
感谢您的任何建议。
实际上 java -version
将消息打印到标准错误而不是标准输出 (stdout),因此请尝试:
errorOutput = out
我有这样的方块:
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
任务的 doLast
块内,但它是在 exec
块之后打印的。
这是输出:
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 的文档和我找到的许多示例,但没有运气解决它。
Gradle: 4.10.2, Windows: 7, jdk1.8.0_192
感谢您的任何建议。
实际上 java -version
将消息打印到标准错误而不是标准输出 (stdout),因此请尝试:
errorOutput = out