2013-04-17 28 views
10

我是Gradle構建工具的新手,現在我正在閱讀用戶指南,但無法完全理解評估和執行階段之間的差異。Gradle的條款評估和執行的區別

在配置階段項目對象被配置和創建DAG,但我們有afterEvaluate,所以這裏評估什麼?評估任務依賴關係還是什麼?

回答

11

正如您在文檔中看到的那樣,有三個階段:初始化,配置和執行。每個步驟都從根項目遍歷到多個項目構建的子項目。當您想根據子項目中的配置配置特定項目時,afterEvaluate在多項目構建的根gradle文件中非常有用。

假設你想爲所有具有特定插件定義的子項目添加一個任務。如果您添加到您的根項目:自根項目子項目之前配置將永遠不會被添加

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

這個任務。 加入afterEvaluate將解決這個給你:

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

所以** ** afterEvaluate可以配置一些項目,其餘的配置已經完成後?類似doLast,但不適用於單獨的任務,** AfterEvaluate **在其他配置之後和執行之前放置它的配置。所以評估在配置結束之後和執行之前執行?我對嗎? – Xelian

+8

是的你是對的。除了配置特定項目後運行的'project.afterEvaluate'之外,還有一個'gradle.projectsEvaluated'掛鉤,在所有項目配置完畢後運行。 –