2012-02-09 9 views
7

Come è l'ordine del metodo doFirst determinato in uno script di build Gradle? Ho il seguente script di esempio che contiene due metodi doFirst. Ho capito che sono additivi, in quanto entrambi eseguono, ma l'ordine che si verifica ciò sembra all'indietro:Gradle doFirst() Esecuzione Order

task initialize 
task depTask(dependsOn: initialize) 

initialize { 
    doFirst { 
     println 'processing doFirst in initialization (configuration)' 
    } 

    println 'processing initialize (configuration)' 
} 

depTask { 
    println 'processing depTask (configuration)' 
} 

depTask << { 
    println 'executing depTask (execution)' 
} 

initialize << { 
    println 'executing initialize (execution)' 
} 

initialize.doFirst { 
    println 'executing doFirst on initialize (execution)' 
} 

L'uscita da questo script è:

processing initialize (configuration) 
processing depTask (configuration) 
executing doFirst on initialize (execution) 
processing doFirst in initialization (configuration) 
executing initialize (execution) 
executing depTask (execution) 

La prima funzione "doFirst" è definita nell'attività di inizializzazione. Il secondo è definito al di fuori del blocco di configurazione. Perché la prima istanza non viene eseguita prima della seconda? L'ordine di esecuzione guarda indietro. Mi sarei aspettato che il primo, all'interno della definizione di configurazione, fosse eseguito per primo. Qualsiasi aiuto per capire questo sarebbe apprezzato.

+0

'println 'elaborazione doFirst nell'inizializzazione (configurazione)'' Non che questo avviene nella fase di configurazione. –

risposta

14

initialize { doFirst { ... } } e initialize.doFirst { ... } sono la stessa identica cosa. Entrambe le istruzioni stanno inserendo un'azione nella parte anteriore dell'elenco delle azioni dell'attività. Quindi l'azione che viene inserita successivamente (in questo caso più avanti nello script) verrà eseguita per prima.

+1

Ok, quindi funziona come uno stack? (ultimo in prima uscita - LIFO). – jmq

+0

nm, l'ho provato. Grazie per avermi indicato nella giusta direzione. – jmq