2014-07-08 9 views
11

Desidero modificare standardOutput di un'attività di build su file, poiché verrà analizzata in un secondo momento da un'altra attività.Gradle: task standardOutput su file e terminale simultaneamente

Ma anche, mi piacerebbe avere simultaneamente uscita nel terminale per vedere cosa sta succedendo nella build.

Ecco come ho cambiato output dell'attività al file:

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

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

A quanto ho capito, posso scrivere proprio OutputStream implementazione con uscita su file e lo standard System.out contemporaneamente ma vorrei usare esistente soluzione.

Inoltre, non riesco a utilizzare strumenti di tipo Unix tee per questo, perché compito può essere lanciato da qualsiasi sistema operativo (Mac OS, Linux o Alcuni anche Windows ...)

Grazie!

+2

Alcuni di terze parti librerie Java (ad esempio Apache Commons) hanno un 'TeeOutputStream'. –

+0

Ok, grazie, ci proverò! –

risposta

12

Spiegazione commento di Peter N in merito 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

La struttura delle cartelle come Ed in unità D.

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

Il progetto è DataCollector Per costruire sto usando

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