ProcessBuilder: процесс не завершается без "redirectOutput" - PullRequest
0 голосов
/ 08 ноября 2018

Я автоматизирую сборку gradle с использованием Java. Я выполняю "gradlew.bat" в процессе, созданном из ProcessBuilder. Вот код:

ProcessBuilder gradlewProcessBuilder = new ProcessBuilder(mainDirPath.concat("\\android\\gradlew.bat"), "assembleDebug");
gradlewProcessBuilder.directory(new File(mainDirPath.concat("/android")));
gradlewProcessBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT); //This is the line
Process gradlewProcess = gradlewProcessBuilder.start();
gradlewProcess.waitFor();

Теперь этот код работает безупречно, но выводит консоль Gradle через консоль приложения, и я этого не хочу. Если я удалю эту строку:

gradlewProcessBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);

Процесс зависает waitFor () бесконечно.

Я абсолютно не представляю, как перенаправление Output может повлиять на это, любой свет, который вы можете пролить, приветствуется.

...