Gradle Wrapper指南
- Gradle
- Maven
1.概述
開發人員通常使用Gradle來管理項目的構建生命週期。對於所有新的Android項目,它都是構建工具的默認選擇。
在本教程中,我們將學習Gradle Wrapper,這是一個附帶的實用程序,可讓您更輕鬆地分發項目。
2.Gradle Wrapper
要構建基於Gradle的項目,我們需要在計算機中安裝Gradle。但是,如果我們安裝的版本與項目版本不匹配,我們可能會面臨許多不兼容的問題。
Gradle Wrapper(也簡稱為Wrapper
解決了此問題。這是一個運行帶有聲明版本的Gradle任務的腳本。如果未安裝聲明的版本,則包裝程序將安裝所需的版本。
包裝器的主要優點是我們可以:
- 無需先安裝Gradle,即可在任何計算機上使用Wrapper構建項目
- 有一個固定的Gradle版本。這將在CI管道上產生可重用和更強大的構建
- 更改包裝器定義即可輕鬆升級到新的Gradle版本
在接下來的部分中,我們將運行需要在本地安裝Gradle的Gradle任務。
2.1 生成包裝器文件
要使用包裝器,我們需要生成一些特定的文件。**我們將使用內置的Gradle任務(稱為wrapper.
**請注意,我們只需要生成一次這些文件。
現在,讓我們在項目目錄中wrapper
$ gradle wrapper
讓我們看一下該命令的輸出:
讓我們看一下這些文件是什麼:
-
gradle-wrapper.jar
包含用於下載gradle-wrapper.properties文件中指定的Gradle發行gradle-wrapper.properties
-
gradle-wrapper.properties
包含Wrapper運行時屬性-最重要的是,與當前項目兼容的Gradle發行版 -
gradlew
是使用包裝器執行Gradle任務的腳本 -
gradlew.bat
是gradlew
等效批處理腳本
默認情況下, wrapper
任務會生成包裝器文件,該包裝器文件具有計算機上當前安裝的Gradle版本。如果需要,我們可以指定其他版本:
$ gradle wrapper --gradle-version 6.3
我們建議將Wrapper文件檢入到GitHub之類的源代碼控制系統中。這樣,我們確保其他開發人員無需安裝Gradle即可運行項目。
2.2 使用包裝器運行Gradle命令
我們可以通過更換運行與包裝物的任何任務搖籃gradle
與**gradlew .**
要列出可用任務,我們可以使用gradlew tasks
命令:
$ gradlew tasks
讓我們看一下輸出:
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-wrapper'.
components - Displays the components produced by root project 'gradle-wrapper'. [incubating]
dependencies - Displays all dependencies declared in root project 'gradle-wrapper'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-wrapper'.
dependentComponents - Displays the dependent components of components in root project 'gradle-wrapper'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'gradle-wrapper'. [incubating]
outgoingVariants - Displays the outgoing variants of root project 'gradle-wrapper'.
projects - Displays the sub-projects of root project 'gradle-wrapper'.
properties - Displays the properties of root project 'gradle-wrapper'.
tasks - Displays the tasks runnable from root project 'gradle-wrapper'.
gradle
命令運行此任務時獲得的輸出相同。
3.常見問題
現在,讓我們看看在使用Wrapper時可能會遇到的一些常見問題。
3.1忽略所有jar文件的全局.gitignore
一些組織不允許開發人員將jar文件檢入其源代碼管理系統。通常,此類項目在全局.gitignore
文件中具有一條規則,以忽略所有jar文件。因此, gradle-wrapper.jar
文件未檢入git存儲庫。因此,包裝器任務無法在其他計算機上運行。在這種情況下,我們需要將gradle-wrapper.jar
文件強制添加到git中:
git add -f gradle/wrapper/gradle-wrapper.jar
同樣,我們可能有一個特定於項目的.gitignore
文件,它忽略了jar文件。我們可以通過放寬.gitignore
規則或通過強行添加包裝jar文件來修復它,如上所示。
3.2 缺少包裝器文件夾
檢入基於Wrapper的項目時,我們可能會忘記包括存在於gradle
文件夾中wrapper
但是正如我們在上面看到的, wrapper
文件夾包含兩個關鍵文件: gradle-wrapper.jar
和gradle-wrapper.properties.
如果沒有這些文件,則在使用包裝程序運行Gradle任務時會出現錯誤。因此,我們必須將wrapper
文件夾檢入到源代碼管理系統中。
3.3 刪除包裝文件
基於Gradle的項目包含一個.gradle
文件夾,用於存儲緩存以加快Gradle任務的速度。有時,我們需要清除緩存以對Gradle構建問題進行故障排除。通常,我們刪除整個.gradle
文件夾。但是,我們可能會將Wrapper gradle文件夾與*.gradle文件夾搞混,*然後將其刪除。之後,在嘗試使用包裝程序運行Gradle任務時,我們肯定會遇到問題。
我們可以通過從源頭獲取最新更改來解決此問題。或者,我們可以重新生成包裝器文件。
4.結論
在本教程中,我們了解了Gradle Wrapper及其基本用法。我們還了解了在使用Gradle Wrapper時可能會遇到的一些常見問題。