網頁

2019/11/16

Gradle Wrapper是什麼?

在Gradle專案的根目錄下可以看到gradlewgradlew.batgrade/wrapper目錄下的gradle-wrapper.jargradle-wrapper.properites,那Gradle Wrapper是什麼呢?

例如下面是一個名稱為demo的Gradle專案,目錄結構如下。

demo/
├─ build.gradle
├─ gradlew
├─ gradlew.bat
├─ settings.gradle
├─ gradle/
│  └─ wrapper/
│     ├─ gradle-wrapper.jar
│     └─ gradle-wrapper.properties
└─ src/
   ├─ main
   └─ test

Gradle是Java應用程式的建構工具(build tool),系統必須安裝有Gradle來才能執行build命令。
而Gradle Wrapper的作用為即使在沒有安裝Gradle的系統中也能build Gradle專案。


Gradle Wrapper其實是一個用來執行build的腳本(script),當執行Gradle Wrapper build的時候,Gradle Wrapper會以指定版本的Gradle來執行build程序;如果該版本的Gradle不存在系統,Wrapper會去Gradle官方伺服器下載指定版本的Gradle來執行build。

使用Gradle Wrapper的好處是確保專案build的Gradle版本一致,不會因團隊成員各自下載安裝Gradle而導致因不同版本造成建構失敗。


使用Gradle Wrapper執行build的方法為,在Gradle專案根目錄中可以找到gradlew.bat檔,此為Windows系統的batch批次檔(gradlew則是給Linux系統如Mac使用的腳本),在指令行(cmd)執行此gradlew.bat build即是執行Gradle Wrapper build。

D:\..\demo>gradlew.bat build

Welcome to Gradle 5.2.1!

Here are the highlights of this release:
 - Define sets of dependencies that work together with Java Platform plugin
 - New C++ plugins with dependency management built-in
 - New C++ project types for gradle init
 - Service injection into plugins and project extensions

For more details see https://docs.gradle.org/5.2.1/release-notes.html

Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

BUILD SUCCESSFUL in 10s
2 actionable tasks: 2 executed

Gradle Wrapper build建構好的檔案預設會放在專案根目錄下的build資料夾中。


Gradle Wrapper包含以下檔案:

  • gradle-wrapper.jar:負責下載指定版本的Gradle。
  • gradle-wrapper.properites:Gradle Wrapper運行時的配置檔,決定Gradle Wrapper build下載的Gradle版本。
  • gradlewgradlew.bat:執行Gradle Wrapper的腳本。

參考:

沒有留言:

張貼留言