Блок Gradle Exec не перенаправляет standardOutput в данный поток вывода - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть такой блок:

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

И я ожидаю, что вывод будет напечатан внутри блока doLast задачи print, но он будет напечатан сразу после блока 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

Спасибо за любой совет.

1 Ответ

0 голосов
/ 23 ноября 2018

На самом деле java -version печатает сообщение со стандартной ошибкой, а не со стандартным выводом (stdout), поэтому вместо этого попробуйте:

    errorOutput = out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...