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"
}
}
}
}
fonte
2013-04-19 11:09:55
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
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. –