2012-11-21 7 views
18

In un file build di gradle esistono diversi modi per specificare gli elementi eseguiti per una determinata attività. il metodo doFirst mette un elemento di attività nella parte superiore dello stack di attività, in modo che l'elemento venga eseguito prima del resto dello stack di attività. Questo è molto utile se hai bisogno di fare alcuni elementi preparatori prima del compito principale. Infatti, se si chiama doFirst più volte, l'elemento aggiunto nell'ultima chiamata è la prima cosa eseguita.gradle doLast philosophy

In teoria, doLast dovrebbe fare qualcosa di simile, ma doLast dovrebbe essere chiamato dopo che l'esecuzione principale dell'attività è stata completata. Ma, nel punto 1.2, se si chiama doLast e quindi si aggiunge qualcosa all'attività principale dopo doLast nel file gradle.build, l'elemento dell'attività principale è l'ultimo elemento chiamato. Ad esempio, il seguente file di build Gradle:

task myTask 

myTask << { 
    println "myTask main execution block" 
} 

myTask.doFirst { 
println "myTask doFirst call one" 
} 

myTask.doFirst { 
    println "myTask doFirst call two" 
} 

myTask.doLast { 
    println "myTask doLast" 
} 

myTask << { 
    println "myTask more main execution block" 
} 

produce il seguente output:

:myTask 
myTask doFirst call two 
myTask doFirst call one 
myTask main execution block 
myTask doLast 
myTask more main execution block 

BUILD SUCCESSFUL 

Total time: 1.585 secs 

mia domanda è questa: E 'l'intento di doLast di aggiungere semplicemente passi sulla fine del task (come fanno i primi puntini all'inizio)? Se è così, doLast sembra inutile con l'eccezione di fornire simmetria con doFirst. Un utente può semplicemente fare myTask < < {...} per aggiungere qualcosa alla fine. Avrei pensato che doLast avrebbe assicurato che tutti gli elementi "doLast" sarebbero stati eseguiti dopo il blocco di esecuzione principale.

È semplicemente il modo in cui doLast del gradle funziona, oppure si tratta di un errore ?? (o sono semplicemente stupido per aggiungere qualcosa al blocco di esecuzione principale dopo aver chiamato doLast - che è stato un semplice errore dopo aver virato in un altro blocco di esecuzione).

risposta

30

<< è uno pseudonimo per doLast, quindi tutto funziona come previsto qui.

Problemi correlati