10
我是Gradle構建工具的新手,現在我正在閱讀用戶指南,但無法完全理解評估和執行階段之間的差異。Gradle的條款評估和執行的區別
在配置階段項目對象被配置和創建DAG,但我們有afterEvaluate,所以這裏評估什麼?評估任務依賴關係還是什麼?
我是Gradle構建工具的新手,現在我正在閱讀用戶指南,但無法完全理解評估和執行階段之間的差異。Gradle的條款評估和執行的區別
在配置階段項目對象被配置和創建DAG,但我們有afterEvaluate,所以這裏評估什麼?評估任務依賴關係還是什麼?
正如您在文檔中看到的那樣,有三個階段:初始化,配置和執行。每個步驟都從根項目遍歷到多個項目構建的子項目。當您想根據子項目中的配置配置特定項目時,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"
}
}
}
}
所以** ** afterEvaluate可以配置一些項目,其餘的配置已經完成後?類似doLast,但不適用於單獨的任務,** AfterEvaluate **在其他配置之後和執行之前放置它的配置。所以評估在配置結束之後和執行之前執行?我對嗎? – Xelian
是的你是對的。除了配置特定項目後運行的'project.afterEvaluate'之外,還有一個'gradle.projectsEvaluated'掛鉤,在所有項目配置完畢後運行。 –