在解析 Gradle 的編譯過程以前咱們須要理解在 Gradle 中很是重要的兩個對象。Project和Task。數據結構
每一個項目的編譯至少有一個 Project,一個 build.gradle
就表明一個project
,每一個project
裏面包含了多個task
,task 裏面又包含不少action
,action
是一個代碼塊,裏面包含了須要被執行的代碼。gradle
在編譯過程當中, Gradle 會根據 build 相關文件,聚合全部的project
和task
,執行task 中的 action。由於 build.gradle
文件中的task
很是多,先執行哪一個後執行那個須要一種邏輯來保證。這種邏輯就是依賴邏輯,幾乎全部的Task 都須要依賴其餘 task 來執行,沒有被依賴的task 會首先被執行。因此到最後全部的 Task 會構成一個 有向無環圖(DAG Directed Acyclic Graph)的數據結構。ui
編譯過程分爲三個階段:code