在開發 JVM 專案時,有時會遇到這些實務問題:
這對團隊開發來說增加了複雜度,有可能因不同版本的 Gradle 而增加建置失敗的風險。
為了避免這種 Gradle 大亂鬥的問題,Gradle 官方推出了一種名為 Gradle Wrapper 的方案,其作法就是在專案裡放一個可攜的腳本,這個腳本可以指定專案使用的 Gradle 版本,並在使用前自動下載並載入執行環境裡。使用 Gradle Wrapper 帶來幾個好處:
這種使用 Gradle Wrapper 的方式,已變成官方建議的標準作法。
雖然大多數的專案在建立時都已經預設採用 Gradle Wrapper,但假如是維護舊專案,需要導入 Gradle Wrapper 時,可以透過指令讓專案支援 Wrapper:
$ gradle wrapper
當專案安裝好 Gradle Wrapper 後,目錄結構會看起來像這樣:
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── build.gradle.kts
├── settings.gradle.kts
├── gradlew
└── gradlew.bat
gradlew
及 gradlew.bat
是分別給 Unix-like 及 Windows 作業系統用的執行腳本gradle/wrapper/gradle-wrapper.jar
是下載 Gradle 執行檔的核心程式gradle/wrapper/gradle-wrapper.properties
則是用來紀錄 Wrapper 的設定檔,比方說 Version、Distribution Type(all
或 bin
)等當我們使用 Gradle Wrapper 時,就不再是使用之前提到的 gradle
指令,而是依照作業系統改用 ./gradlew
或 gradlew.bat
指令。Gradle Wrapper 會依照 gradle/wrapper/gradle-wrapper.properties
的設定值,到 Gradle 官網下載對應版本的 Gradle 執行檔下來,以類似 Portable 的方式來執行各種指令。Gradle Wrapper 的運作流程可以參考官網的這張說明:
假如手上專案使用的 Gradle Wrapper 版本過舊想要升級,Gradle 也有對應的升級指令:
$ ./gradlew wrapper --gradle-version 7.2
看到這邊您可能會很疑惑,既然 Gradle 官方都推薦使用 Gradle Wrapper 了,那我們還需要在本機安裝 Gradle 嗎?(而且還學了 5 種方式耶!)
答案是:看情況。
假如您只需要維護已經裝好 Gradle Wrapper 的專案的話,那的確是不需要在本機安裝 Gradle。反之,假如你會需要在本機用 Gradle 建立一個全新的專案的話,那就還是得安裝 Gradle 喔!
當然,還是有幾個例外。假如您是使用 IntelliJ IDEA 或 Android Studio 來建立專案的話,這些 IDE 都已經內建 Gradle,所以本機就可以不用安裝 Gradle。另外也提醒一下,即便 Gradle Wrapper 可以很聰明方便的下載與運行 Gradle,但開發機上該有的 JDK 執行環境還是要有喔!