Gradle:任务的标准输出同时到文件和终端

Art*_*lin 13 exec gradle output

我想将standardOutput一个构建任务更改为文件,因为稍后将由另一个任务解析.

而且,我想在终端中同时输出以查看构建中发生了什么.

这是我将任务的输出更改为文件的方式:

task sampleTaskWithOutputToFile(type: Exec) {
    commandLine 'someCommand', 'param1'

    doFirst {
        standardOutput = new FileOutputStream('someFolder/someFile.out')
    }
} 
Run Code Online (Sandbox Code Playgroud)

据我了解,我可以写自己OutputStream的实现与输出到文件和标准的System.out同时,但我想用现有的解决方案.

此外,我不能使用像这样的unix工具tee,因为任务可以从任何操作系统(Mac OS,某些Linux甚至Windows ......)启动

谢谢!

小智 18

阐述Peter N对TeeOutputStream的评论:

task sampleTaskWithOutputToFile(type: Exec) {
    commandLine 'someCommand', 'param1'

    doFirst {
        standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
            new FileOutputStream("someFolder/someFile.out"), System.out);
    }
}
Run Code Online (Sandbox Code Playgroud)