Gradle: стандартная задача: выход в файл и на терминал одновременно

Я хочу заменить standardOutput одной задачи сборки на файл, потому что позже он будет проанализирован другой задачей.

Но я также хотел бы иметь одновременно вывод в терминале, чтобы увидеть, что происходит в сборке.

Вот как я изменил вывод задачи в файл:

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

    doFirst {
        standardOutput = new FileOutputStream('someFolder/someFile.out')
    }
} 

Как я понимаю, я могу написать собственную реализацию OutputStream с выводом в файл и стандартным System.out одновременно , но я бы хотел использовать существующее решение.

Кроме того, я не могу использовать такие инструменты Unix, как tee, потому что задачу можно запустить из любой ОС (Mac OS, Linux или даже из Windows...)

Спасибо!

Ответ 1

Разъяснение комментария Питера 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);
    }
}

Ответ 2

Структура папок, как И это в D диск.

                    BuildDemo                          
                            |------DataCollector
                                    |------DataCollector
                                                |------bin
                                                        |------Development
                                                                    |------*.dtsx           //source code
                                                                    |------DataCollector.ispac
                                                |------obj
                                                |------*.*
                                    |------DataCollector.sln

Проект DataCollector Для сборки я использую

d:\BuildDemo\DataCollector>"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com" DataCollector.sln /rebuild "Development|Default"