2014-07-08 9 views
11

Chcę zmienić standardOutput jednego zadania kompilacji na plik, ponieważ zostanie ono sparsowane później przez inne zadanie.Gradle: standardowe zadanieOutput do pliku i terminalu jednocześnie

Ale również, chciałbym mieć jednocześnie wyjście w terminalu, aby zobaczyć, co się dzieje w kompilacji.

ten sposób zmieniłem wyjście zadania do pliku:

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

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

Jak rozumiem, mogę napisać własny OutputStream realizacji z wyjściem do pliku i standardowej System.out jednocześnie ale chciałbym wykorzystać istniejący rozwiązanie.

Ponadto, nie można korzystać z narzędzi unix jak tee za to, ponieważ zadanie może zostać uruchomiony z dowolnego OS (Mac OS, Linux lub nawet niektóre Windows ...)

dzięki!

+2

Niektóre firmy będące biblioteki Java (np Apache Commons) mają 'TeeOutputStream'. –

+0

OK, dzięki, spróbuję tego! –

Odpowiedz

12

wykładając na komentarz Petera N jest czasowo TeeOutputStream:

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

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

strukturze folderów jak I to w dysku D.

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

Projekt jest DataCollector Aby zbudować używam

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