2013-04-17 16 views
10

Sono nuovo nello strumento di creazione di Gradle e ora sto leggendo la Guida dell'utente, ma non riesco a comprendere appieno la differenza tra le fasi di valutazione e di esecuzione.Differenza tra la valutazione e l'esecuzione dei termini di Gradle

Nella fase di configurazione gli oggetti del progetto sono configurati e il DAG è stato creato, ma abbiamo dopo Esame, quindi cosa viene valutato qui? Valutazione delle dipendenze delle attività o cosa?

risposta

11

Come si è visto nella documentazione, ci sono tre fasi: Inizializzazione, Configurazione ed Esecuzione. Ogni passaggio viene eseguito dal progetto root fino ai sottoprogetti per le build di più progetti. Il valore afterValuate è utile nel file gradle radice di una build multiprogetto quando si desidera configurare elementi specifici in base alla configurazione eseguita nei sottoprogetti.

Dire di voler aggiungere un'attività per tutti i sottoprogetti che hanno definito un plugin specifico. Se si aggiunge al progetto principale: non verrà mai aggiunto

subprojects {subProject -> 
    if (subProject.plugins.hasPlugin('myplugin')){ 
    subProject.task('newTask')<<{ 
     println "This is a new task" 
    } 
    } 
} 

Questo compito in quanto il progetto principale è configurato prima i sottoprogetti. Aggiunta afterEvaluate risolverà questo per voi:

subprojects {subProject -> 
    afterEvaluate{ 
    if (subProject.plugins.hasPlugin('myplugin')){ 
     subProject.task('newTask')<<{ 
     println "This is a new task" 
     } 
    } 
    } 
} 
+0

Così ** ** afterEvaluate può configurare alcuni elementi dopo la configurazione resto è stato fatto? Qualcosa di simile a Ultimi, ma non per compiti da solo, ** afterEvaluate ** metti la sua configurazione dopo l'altra configurazione e prima dell'esecuzione. Quindi la valutazione viene eseguita dopo la fine della configurazione e prima dell'esecuzione? Ho ragione? – Xelian

+8

Sì, hai ragione. Oltre a 'project.afterEvaluate', che viene eseguito dopo che un particolare progetto è stato configurato, esiste anche un hook' gradle.projectsEvaluated' che viene eseguito dopo che tutti i progetti sono stati configurati. –

Problemi correlati