2013-04-17 13 views
10

Gradle derleme aracında yeniyim ve şimdi Kullanım Kılavuzu'nu okuyorum, ancak değerlendirme ve yürütme aşamaları arasındaki farkı tam olarak anlayamıyorum.Gradle terimleri değerlendirme ve yürütme arasındaki fark

Yapılandırma aşamasında proje nesneleri yapılandırıldı ve DAG oluşturuldu, ancak Öğeyi Tamamladıktan sonra, burada değerlendirme nedir? Görev bağımlılıklarının değerlendirilmesi ya da ne?

cevap

11

Dokümantasyonda gördüğünüz gibi üç aşama vardır: Başlatma, Yapılandırma ve Yürütme. Her adım, çok sayıda proje için kök projeden alt projelere aktarılır. Alt projelerde yapılan yapılandırmaya göre belirli öğeleri yapılandırmak istediğinizde, afterEvaluate çoklu proje yapısının kök not dosyasında kullanışlıdır.

Tanımlanmış belirli bir eklentiye sahip tüm alt projeler için bir görev eklemek istediğinizi varsayalım. Eğer kök projeye eklerseniz: Kök proje alt projeler önce yapılandırıldı beri

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

Bu görev eklenecektir asla.

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

Yani dinlenme yapılandırması yapılmıştır sonra ** afterEvaluate ** bazı öğeleri yapılandırabilirsiniz: afterEvaluate sizin için bu çözecektir ilave edilmesi,? DoLast gibi bir şey, ama yalnız görevler için değil, ** afterEvaluate ** diğer yapılandırmadan sonra ve yürütmeden önce yapılandırmasını koydu. Yani değerlendirme, bir yapılandırma sonunda ve yürütmeden önce yürütülür? Ben haklı mıyım – Xelian

+8

Evet haklısınız. Belirli bir proje yapılandırıldıktan sonra çalışan "project.afterEvaluate" in yanı sıra, tüm projeler yapılandırıldıktan sonra çalışan bir "gradle.projectsEvaluated" kancası da vardır. –