Как напечатать выходной поток Gradle BuildLauncher Live и построчно - PullRequest
0 голосов
/ 12 июня 2019

Я использую API Gradle Tooling для программного выполнения задач сборки.Для этого я использую BuildLauncher и запускаю на нем .forTasks ("clean").Я хотел бы печатать стандартный вывод и стандартную ошибку в режиме реального времени построчно.

Мне удалось распечатать весь стандартный вывод, но только после завершения процесса сборки с использованием приведенного ниже кода.

// connector already created and set up

ProjectConnection connection = connector.connect();
BuildLauncher build = connection.newBuild();
build.forTasks("clean");

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

build.setStandardOutput(outputStream);
build.setStandardError(outputStream);

build.run();

System.out.println(outputStream.toString());

connection.close();

1 Ответ

0 голосов
/ 13 июня 2019

Я нашел решение и отвечаю на свой вопрос на случай, если кто-нибудь наткнется на него.

Ключ должен был переопределить метод write () при создании нового объекта OutputStream.Приведенный ниже код печатает все в реальном времени и построчно в System.out, но его можно легко изменить для печати в графический интерфейс, окно инструментов (что я и делаю) или в любом другом месте.

// connector already created and set up

ProjectConnection connection = connector.connect();
BuildLauncher build = connection.newBuild();
build.forTasks("clean");

OutputStream outputStream = new OutputStream() {
            @Override
            public void write(int b) throws IOException {
                System.out.print((char) b); // or output it to anywhere else you'd like
            }
        };

build.setStandardOutput(outputStream);
build.setStandardError(outputStream);

build.run();

connection.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...