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"