衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

gradle和gradlew的區別?

哆啦安全 ? 來源:哆啦安全 ? 作者:哆啦安全 ? 2022-12-13 09:57 ? 次閱讀

使用Gradle開發者最常問的問題之一便是:gradlegradlew的區別?

這兩個都是應用在特定場景的 Gradle 命令。通過本篇文章你將了解到每個命令干了什么,以及如何在兩個命令中做選擇。

快速摘要

如果你正在開發的項目當中已經包含gradlew腳本,安啦,可以一直使用它。沒有包含的話,請使用gradle命令生成這個腳本。

想知道為什么嗎,請繼續閱讀。

gradle 命令

如果你從 Gradle 官網(https://gradle.org/releases)下載和安裝了 Gradle 的話,你便可以使用安裝在 bin 路徑下的 gradle 命令了。當然你記得將該 bin 路徑添加到設備的 PATH 環境變量中。

此后,在終端上運行gradle的話,你會看到如下輸出:

4deabc3e-7a86-11ed-8abf-dac502259ad0.png

你會注意到輸出里打印了 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的示例:

4e004ff4-7a86-11ed-8abf-dac502259ad0.png

輸出和運行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 啥區別、怎么選?

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FCCSP與FCBGA都是倒裝有什么區別

    本文簡單介紹了倒裝芯片球柵陣列封裝與倒裝芯片級封裝的概念與區別。 FCCSP與FCBGA都是倒裝,怎么區分?有什么區別
    的頭像 發表于 11-16 11:48 ?2186次閱讀
    FCCSP與FCBGA都是倒裝有什么<b class='flag-5'>區別</b>

    輸入和輸出電壓的區別

    電子發燒友網站提供《輸入和輸出電壓的區別.pdf》資料免費下載
    發表于 10-24 09:20 ?0次下載
    輸入和輸出電壓的<b class='flag-5'>區別</b>

    MIPI和LVDS顯示屏的區別

    MIPI和LVDS顯示屏的區別
    的頭像 發表于 09-23 10:02 ?3221次閱讀

    交叉導軌和直線導軌的區別

    交叉導軌和直線導軌的區別
    的頭像 發表于 09-02 10:14 ?548次閱讀
    交叉導軌和直線導軌的<b class='flag-5'>區別</b>

    簡述功放和音響的區別

    功放和音響在音頻系統中扮演著不同的角色,它們之間存在著明顯的區別。以下將從本質、配套設備、功能、實用性、價格等多個方面詳細闡述功放和音響的區別
    的頭像 發表于 08-22 11:46 ?2910次閱讀

    請問LM2902與LM2902KV的區別是否只有供電電壓的區別

    請問下LM2902與LM2902KV的區別是否只有供電電壓的區別?LM2904與LM2904V也是電壓的區別
    發表于 08-22 06:20

    以太網端口和千兆端口的區別

    以太網端口和千兆端口在多個方面存在顯著的區別,這些區別主要體現在速度、應用范圍、技術規格以及網絡性能等方面。
    的頭像 發表于 08-07 15:42 ?1563次閱讀

    使用Android Studio 2021.3.1軟件,編譯app_android時出錯怎么解決?

    錯誤信息:Gradle sync failed: Process \'command \'git\'\' finished with non-zero exit value 128 (536 ms
    發表于 06-26 07:21

    CREG和CEREG的區別是什么?

    CREG和CEREG的 區別和利用
    發表于 06-04 06:15

    示波器有源探頭和無源探頭的區別

    示波器有源探頭和無源探頭在多個方面存在顯著的區別,這些區別主要體現在以下幾個方面。
    的頭像 發表于 05-09 16:24 ?1932次閱讀

    fpga芯片和soc芯片的區別

    FPGA芯片和SoC芯片在多個方面存在顯著的區別
    的頭像 發表于 03-14 17:28 ?3322次閱讀

    fpga芯片和普通芯片的區別

    FPGA芯片和普通芯片在多個方面存在顯著的區別
    的頭像 發表于 03-14 17:27 ?1876次閱讀

    fpga與芯片的區別

    FPGA(現場可編程門陣列)與芯片之間的主要區別體現在以下幾個方面。
    的頭像 發表于 03-14 15:57 ?2084次閱讀

    開關SA和SB的區別

    開關SA和SB的區別 開關SA和SB是電氣系統中常用的兩種開關設備。它們在外觀、用途、工作原理、特點等方面存在一定的區別。下面將詳細介紹開關SA和SB的區別。 一、外觀區別 開關SA和
    的頭像 發表于 02-26 10:30 ?6820次閱讀

    verilog同步和異步的區別 verilog阻塞賦值和非阻塞賦值的區別

    Verilog中同步和異步的區別,以及阻塞賦值和非阻塞賦值的區別。 一、Verilog中同步和異步的區別 同步傳輸和異步傳輸是指數據在電路中傳輸的兩種方式,它們之間的區別在于數據傳輸的
    的頭像 發表于 02-22 15:33 ?1834次閱讀
    帝王百家乐全讯网2| 24山辅星水法分阴阳| 巨星百家乐官网的玩法技巧和规则 | 二八杠的玩法| 真龙国际娱乐| 真人百家乐官网皇冠网| 网络百家乐官网软件真假| 澳门百家乐官网官网网站| 百家乐小游戏开发| 怎么看百家乐路单| 大发888客户端的 软件| 洮南市| 金鼎百家乐官网局部算牌法| 网上百家乐官网内| 百家乐专用台布| 大发888扑克场下载| 平陆县| 百家乐官网赔率计算| 百家乐全自动分析软件| 免费百家乐统计| 皇冠百家乐| 百家乐官网号解码器| 太阳城百家乐网上| 新全讯网网站112| 庆安县| 葡京百家乐官网的玩法技巧和规则| 博彩百家乐心得| 大发888网址怎么找| 百家乐官网平注法是什么| 百家乐心得分享| 大发888娱乐城好么| 澳门百家乐官网娱乐场| 风水24山图解| 威尼斯人娱乐城百家乐赌博| 平塘县| 钱柜百家乐官网娱乐城| YY百家乐的玩法技巧和规则| 龙口市| 百合百家乐官网的玩法技巧和规则| 尊龙百家乐娱乐| 庆安县|