gpt4 book ai didi

java - 如何实时逐行打印 Gradle BuildLauncher 的输出流

转载 作者:行者123 更新时间:2023-12-02 01:28:00 25 4
gpt4 key购买 nike

我正在使用 Gradle Tooling API 以编程方式执行构建任务。为此,我使用 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();

最佳答案

我找到了一个解决方案,并正在回答我自己的问题,以防有人偶然发现它。

关键是在创建新的 OutputStream 对象时重写 write() 方法。下面的代码将所有内容实时逐行打印到 System.out,但可以轻松更改为打印到 GUI、工具窗口(这就是我正在做的)或其他任何地方。

// 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();

关于java - 如何实时逐行打印 Gradle BuildLauncher 的输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56566504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com