Gradle Settings 類的學習


# 任務

  • 了解 Settings 類作用於 Gradle 構建的哪個階段?
  • 了解 Settings 類與 settings.gradle 的關系
  • 了解和使用 inlcude 方法
  • hook 初始化階段的監聽器
  • 總結

# Settings 類作用於 Gradle 構建的哪個階段?

前面介紹過,Gradle 構建涉及到三個階段,分別是 初始化階段,配置階段,執行階段。在 Gradle 中就是通過執行 Settings 類來完成構建的 初始化階段

# Settings 類與 settings.gradle 的關系

就像大家所知的build.gradle文件是對應於Project的,那么settings.gradle對應於 Settings 類啦。

# includ 方法

在 Setting 類中,最重要的一個方法就是 include 方法了。

方法名 作用
void include(String... projectPaths); 添加需要參與構建的Project,接受一個可變參數,每一個值是一個Project路徑

這里有一個需要注意的點:可變參數的路徑並不是 project 的文件路徑,它指的是當前 project相對於根project的路徑。

例如:在一個 AS 的示例工程中,有如下一些 module ,那么每一個 project 的 path 該如何表示呢,下面我列舉一個示例來表示一下:

GradleDemo(根Project) -> path = ""
    app(子Project) -> path = ":app"
        subapp(app的子project) -> path =  ":app:subapp"
    common(子Project) -> path = ":common"
    play(子Project) -> path = ":play"

 

從上面的 module 的結構來看, GradleDemo 為根project ,它的路徑是 :,而對於 appmodule 來說,它的 path 是 :appsubapp是 app project 的子 project ,它的 path 是:app:subapp。所以基於上面的理解,每一個 project 的路徑都是相對於根project而言的,路徑的分隔符是 : 而不是\

下面是 project路徑 的格式:

:路徑1:路徑2

 

說了那么多,現在來看看如何使用 include 方法咯:

  • 添加一個 project
//添加:app這個module參與構建
include ":app"

 

  • 添加多個 project
//include 接受可變參數,使用 , 逗分開不同的路徑
include ':app',':common'

 

# hook 初始化階段的監聽器

在初始化階段中主要做的事有兩件:

  • 確定哪些是需要構建的 project 。
  • 為所有的參與構建的 Project 創建對象。

那么下面列舉是在執行 settings.gradle 腳本的監聽回調:

gradle.settingsEvaluated {
    println "【settings.gradle】 初始化執行結束"
}

gradle.projectsLoaded {
    Gradle gradle ->
        println "【settings.gradle】 所有在 settings 中 include 的 Project 對象都創建完成了"
}

 

# 總結

雖然 Settings 類很簡單,但是我們不能忽略的它的作用哦,畢竟它負責了 Gradle 構建的第一個階段。在日常開發中,我們主要使用到的就是 include 方法了,所以本文也只演示了該方法的作用與使用。

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM