使用
Gradle
的開發者最常問的問題之一便是:gradle
和gradlew
的區別?。
這兩個都是應用在特定場景的 Gradle 命令。通過本篇文章你將了解到每個命令干了什么,以及如何在兩個命令中做選擇。
快速摘要
如果你正在開發的項目當中已經包含
gradlew
腳本,安啦,可以一直使用它。沒有包含的話,請使用gradle
命令生成這個腳本。想知道為什么嗎,請繼續閱讀。
gradle 命令
如果你從 Gradle 官網(https://gradle.org/releases)下載和安裝了 Gradle 的話,你便可以使用安裝在 bin 路徑下的 gradle 命令了。當然你記得將該 bin 路徑添加到設備的 PATH 環境變量中。
此后,在終端上運行gradle
的話,你會看到如下輸出:
你會注意到輸出里打印了 Gradle 的版本,它對應著你運行的 gradle 命令在設備中的 Gradle 安裝包版本。這聽起來有點廢話,但在談論 gradlew 的時候需要明確這點,這很重要。
通過這個本地安裝的 Gradle,你可以使用 gradle 命令做很多事情,包括:
-
使用
gradle init
命令創建一個新的 Gradle 項目或者使用gradle wrapper
命令創建 gradle wrapper 目錄及文件 -
在一個 Gradle 項目內使用
gradle build
命令進行 Gradle 編譯 -
通過
gradle tasks
命令查看當前的 Gradle 項目中支持哪些 task
上述的命令均使用你本地安裝的 Gradle 程序,無論你安裝的是什么版本。
如果你使用的是 Windows 設備,那么 gradle 命令等同于 gradle.bat,gradlew 命令等同于 gradlew.bat,非常簡單。
gradlew 命令
gradlew
命令,也被了解為Gradle wrapper
,與 gradle 命令相比它是略有不同的。它是一個打包在項目內的腳本,并且它參與版本控制,所以當年復制了某項目將自動獲得這個gradlew腳本。
“可那又如何?”
好吧,如果你這么想。讓我告訴你,它有很多重要的優勢。
1. 無需本地安裝 gradle
gradlew腳本不依賴本地的 Gradle 安裝。在設備上第一次運行的時候會從網絡獲取 Gradle 的安裝包并緩存下來。這使得任何人、在任何設備上,只要拷貝了這個項目就可以非常簡單地開始編譯。
2. 配置固定的 gradle 版本
這個gradlew腳本和指定的 Gradle 版本進行綁定。這非常有用,因為這意味著項目的管理者可以強制要求該項目編譯時應當使用的 Gradle 版本。
Gradle 特性并不總是互相兼容各版本的,所以使用 Gradle wrapper 可以確保項目每次編譯都能獲得一致性的結果。
當然這需要編譯項目的人使用gradlew命令,如下是在項目內運行./gradlew
的示例:
輸出和運行gradle
命令的結果比較相似。但仔細查看你會發現版本不一樣,不是上面的6.8.2
而是6.6.1
。
這個差異說重要也重要,說不重要也不重要。
但當使用gradlew的話可以免于擔心由于 Gradle 版本導致的不一致性,緣自它可以保證所有的團隊成員以及 CI 服務端都會使用相同的 Gradle 版本來構建這個項目。
另外,幾乎所有使用gradle
命令可以做的事情,你也可以使用gradlew
來完成。比如編譯一個項目就是./gradlew build
。
如果你愿意的話,可以拷貝示例項目并來試一下gradlew
。
https://github.com/tkgregory/spring-boot-api-example.git
gradle 和 gradlew 對比
至此你應該能看到在項目內使用gradlew
通常是最佳選擇。確保gradlew腳本受到版本控制,這樣的話你以及其他開發者都可以收獲如上章節提到的好處。
但是,難道沒有任何情況需要使用gradle
命令了嗎?當然有。如果你期望在一個空目錄下搭建一個新的 Gradle 項目,你可以使用gradle init
來完成。這個命令同樣會生成gradlew腳本。
(如下的表格簡單列出兩者如何選)可以說,使用gradlew確實是 Gradle 項目的最佳實踐。
你想做什么? | gradle還是gradlew? |
---|---|
編譯項目 | gradlew |
測試項目 | gradlew |
項目內執行其他 Gradle task | gradlew |
初始化一個 Gradle 項目或者生成 Gradle wrapper | gradle |
審核編輯 :李倩
-
程序
+關注
關注
117文章
3795瀏覽量
81406 -
腳本
+關注
關注
1文章
391瀏覽量
14938 -
gradle
+關注
關注
0文章
26瀏覽量
741
原文標題:開發這么久,gradle 和 gradlew 啥區別、怎么選?
文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論