天天看點

生命周期和settings.gradle說明

  • Gradle 項目的生命周期分為三大階段: Initialization -> Configuration -> Execution. 每個階段都有自己的職責
  • 生命周期和settings.gradle說明
Initialization 階段主要目的是初始化建構, 它又分為兩個子過程,一個是執行 Init Script,另一個是執行 Setting Script。
init.gradle 檔案會在每個項目 build 之前被調用,用于做一些初始化的操作,它主要有如下作用:
Setting Script 則更重要, 它初始化了一次建構所參與的所有子產品。

Configuration 階段:這個階段開始附加元件目中所有子產品的 Build Script。所謂 "加載" 就是執行 build.gradle 中的語句, 根據腳本代碼建立對應的 task, 最終根據所有 task 生成由 Task 組成的有向無環圖(Directed Acyclic Graphs)      
生命周期和settings.gradle說明
  • 進而構成如下有向無環樹
  • 生命周期和settings.gradle說明
Execution 階段:這個階段會根據上個階段建構好的有向無環圖,按着順序執行 Task【Action 動作】。      
  • settings.gradle檔案說明
1、作用:主要是在項目初始化階段确定一下引入哪些工程需要加入到項目建構中,為建構項目工程樹做準備。
2、工程樹:gradle 中有工程樹的概念,類似于 maven 中的 project 與 module      
3、内容:裡面主要定義了目前 gradle 項目及子 project 的項目名稱
4、位置:必須放在根工程目錄下。
5、名字:為 settings.gradle 檔案,不能發生變化
6、對應執行個體:與 org.gradle.api.initialization.Settings 執行個體是一一對應的關系。每個項目隻有一個 settings 檔案。
7、關注:作為開發者我們隻需要關注該檔案中的 include 方法即可。使用相對路徑【 : 】引入子工程。
8.一個子工程隻有在 setting 檔案中配置了才會被 gradle 識别,這樣在建構的時候才會被包含進去

//根工程項目名
rootProject.name = 'root' 
//包含的子工程名稱
include('subject01')   // 也可以這樣寫,也可省略小括号
include 'subject02' 
include 'subject03' 
//包含的子工程下的子工程名稱
include 'subject01:subproject011'   // 表示子工程subject01下有1個子子subproject011
include 'subject01:subproject012'