Gradle 入門:Gradle Wrapper

----《Android Gradle 權威指南》學習筆記

總目錄:Gradle 學習系列 -- 目錄
上一篇:Gradle 入門:Hello World
下一篇:Gradle 入門:日志

1 Gradle Wrapper 簡介

1.1 Wrapper,顧名思義,就是 Gradle 的一層包裝,便于在團隊開發過程中統一 Gradle 構建的版本。這樣大家都可以用統一的 Gradle 版本進行構建工程,可以避免因為 Gradle 版本不統一而帶來的問題。

1.2 一般在項目開發中,用的都是 wrapper 這種方式,而不是自己下載 gradle 的壓縮包,解壓后配置 gradle 環境變量的方式。 wrapper 在 Windows 下是一個批處理文件,在 Linux 下是一個 shell 腳本。當使用 wrapper 啟動 gradle 的時候,wrapper 會自動檢查 gradle 是否被下載關聯,如果沒有則會從配置的地址進行下載并運行構建。這種方式對開發人員是非常方便的,因為不用再去專門配置 gradle 環境了,只要執行 wrapper 命令即可,wrapper 它會自動搞定一切。 ---- IDE 中就是這種方式。

2 生成 Wrapper

2.1 Gradle 提供了內置的任務 wrapper task 來自動生成 wrapper 所需的目錄及文件,在項目的根目錄中(一般是 build.gradle 的路徑下)輸入命令 gradle wrapper 即可生成, 如圖所示:
1.5-1.png
1.5-2.png

2.2 各個文件的作用說明如下:

(1) gradlew 和 gradlew.bat 分別 Linux 和 Windows 下的可執行腳本。用法和 Gradle 原生命令是一樣的。比如同樣執行 taskHello 任務,兩種命令的結果是相同的:
1.5-3.png

但是有一點需要注意:
gradle taskHello 是用在系統環境變量中配置的 Gradle 版本來執行任務的,如果找不到 Gradle 則會報錯
gradlew taskHello 是用在 ./gradle/wrapper/gradle-wrapper.properties 配置的 Gradle 版本來執行任務的,如果找不到對應的 Gradle 則會去配置的鏈接中下載,下載的默認路徑是 C 盤中的 .gradle 文件夾。

(2) gradle-wrapper.jar 是具體業務邏輯實現的 jar 包 gradlew 最終還是使用 java 執行這個 jar 包來執行 Gradle 的相關操作。
(3) gradle-wrapper.properties 是配置文件,用于配置使用哪個版本的 Gradle。

2.3 生成的這些 wrapper 文件可以隨著項目工程一起提交到版本控制系統里面(比如 git),這樣后續開發也會按照提交的配置好的 Gradle 版本進行統一構建開發。

3 wrapper 配置

3.1 在執行命令 gradle wrapper 時可以指定一些參數來控制 wrapper 的生成。具體有如下兩個配置參數:

--gradle-version  用于指定使用的 Gradle 的版本
--gradle-distribution-url 用于指定下載 Gradle 版本的URL,該值的規則是 http://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip

3.2 gradle-wrapper.properties 是 gradle 的配置文件。在執行命令 gradle wrapper 時的參數配置會寫入該文件中,具體的字段說明如下:

distributionBase    下載 Gradle 壓縮包解壓后存儲的主目錄
distributionPath    相對于 distributionBase 的解壓后的 Gradle 壓縮包的路徑 
zipStoreBase        同 distributionBase,區別是存放的是 zip 壓縮包
zipStorePath        同 distributionPath,區別是存放的是 zip 壓縮包
distributionUrl     Gradle 發行版本壓縮包的下載地址  ---- 比較關注的是這個配置字段

3.3 如果運行 ./gradlew 的時候一直卡著不動,可能是因為官方的 Gradle 地址被封閉了,可以把 distributionUrl 換成其他的鏡像地址嘗試。

4 自定義配置 wrapper task 生成 gradle wrapper

4.1 我們可以對 wrapper task 進行修改,生成自定義配置的 gradle-wrapper.properties

4.2 在 build.gradle 構建腳本中配置以下代碼:

task wrapper(type: Wrapper){
     gradleVersion = '7.1'
     archiveBase = 'GRADLE_USER_HOME'
     archivePath = 'wrapper/dists'
     distributionBase = 'GRADLE_USER_HOME"'
     distributionPath = 'wrapper/dists'
     distributionUrl = 'http\://services.gradle.org/distributions/gradle-7.1-all.zip'
}

這樣在執行 gradle wrapper 就會生成7.1版本的 wrapper 了,而不用使用 --gradle-version 7.1 這樣的命令進行指定了。

相關代碼:https://gitee.com/fzq.com/gradle-demos
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容