IDEA如何正確配置Gradle? GRADLE_USER_HOME 和 Gradle user home的區別

緣起

網上已經有了如此多的IDEA配置Gradle的文章,爲何本菜鳥還想再寫一篇這樣的水文呢? 原因是按照網上大多數的配置,Gradle並不能按照你的想法很好的工作,倒不是說根據其他大佬的博客不能構建,而是你在構建時會發現IDEA使用的Gradle版本並不是wrapper中指定的版本。

目標

正確配置IDEA(2019.2.4), 使得在Terminal中執行以gradlew開頭命令和操作圖形化的IDEA使用Gradle版本是同一個版本。

  • 在這裏插入圖片描述
  • 在這裏插入圖片描述

GRADLE_USER_HOME和Gradle user home的區別

GRADLE_USER_HOME

  • GRADLE_USER_HOME指的是你需要配置的環境變量。該環境變量決定了執行 project/gradle/gradle-rapper.jar時下載 project/gradle/gradle-wrapper.properties中指定版本gradle的存放位置。
    • 簡言之:在命令行中輸入的以gradlew的開頭的命令會使用GRADLE_USER_HOME指定環境變量所在位置來存放下載的gradle.
      • 注意:必須是gradlew開頭的命令,不能是gradle開頭的命令。原因是gradlew開頭的命令說明你想使用gradle wrapper, 而gradle開頭的命令則是使用的你配置在環境變量當中的gradle,這兩個是不一樣的
    • 在這裏插入圖片描述

Gradle user home

  • Gradle user home指的是IDEA中關於gradle的配置,該配置指是給IDEA使用的,當你在IDEA中點擊gradle相關的圖形按鈕時,譬如gradle構建任務的按鈕或者是Enable-AutoImport按鈕時會使用Gradle user home指定的目錄下載project/gradle/gradle-wrapper.properties指定的gradle版本
    • 簡言之:在IDEA中的各種圖形化操作都是使用這個目錄去保存下載的gradle。
    • 在這裏插入圖片描述
    • 在這裏插入圖片描述

IDEA Gradle user home的坑

  • Gradle user home配置的不好的話是有一個大坑的,按照網上大多數的配置都會踩到這個坑,而且極不容易被發現。
    • 這個坑的現象是:你在Terminal中輸入的gradlew的任何命令使用的gradle版本和IDEA中圖形化操作使用的gradle版本是不一致的。
    • 造成這個坑的必要條件:
      • 1、你下載了一個版本的Gradle版本,並且按照網上的博客配置了Gradle環境變量。
      • 2、你在IDEA中配置了Gradle user home,並且該把該目錄指向了你在本地自己下載解壓的gradle。
    • 如果你按照上面的配置,並且你自己單獨下載的gradle和project/gradle/gradle-wrapper.properties中指定版本不一致時,你在IDEA中的Terminal中執行和點擊IDEA圖形按鈕的版本並不一致。
    • 在這裏插入圖片描述

如何驗證這個坑?

  • 可以在你下載的gradle/init.d目錄中寫一個名爲 init.gradle的腳本。你需要在三個地方寫這個腳本,一個是你自己單獨下載的gradle,一個是GRADLE_USER_HOME中下載的gradle版本,一個是IDEA Gradle user home指定目錄中下載的grald中都加上,你就能清晰的看出到底當前使用的是那個gradle.
allprojects {
	println "using gradle wrapper v5.6.4 version!!!"
}

最終解決方案

第一種解決方案,不下載Gradle,不配置關於Gradle的任何的環境變量,不配置IDEA的Gradle user home

  • 這種方式對於向使用Gradle的小白來說比較方便。此時你創建IDEA工程時,IDEA會自動下載工程目錄下gradle/gradle-wrapper.properties中指定的Gradle版本到你的家目錄的 .gradle目錄下。
  • 實際上使用Gradle的確不需要自己額外安裝一個Gradle,gradle的設計者考慮到gradle會頻繁的升級因此每個gradle工程會帶有一個gradle的目錄,這個目錄主要作用就是描述當前工程需要哪個版本的gradle,以及如何下載gradle. 因此你拿到別人的gradle項目,即使本機沒有安裝gradle,當你執行以gradlew開頭的命令時會自行下載這個項目想要的gradle版本。

第二種方案:如果你想自己安裝gradle,並且所有的工程都使用你自己單獨安裝的gradle。

  • 配置Gradle的環境變量,使得在任意的路徑下可以執行gradle的可執行文件。
  • 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路徑,這裏的路徑實際上可以不指定。- 可選操作
  • 配置 User from gradle指向安裝的gradle:
    • 在這裏插入圖片描述

第三種解決方案,配置單獨的gradle,並且工程默認使用gradle wrapper.

  • 配置Gradle的環境變量,使得在任意的路徑下可以執行gradle的可執行文件。
  • 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路徑,這裏的路徑實際上可以不指定。
    • 注意:如果想要指定Gradle user home,那麼一定不要配置爲你安裝的gradle所在目錄,否則即使制定了user gradle from : gradle-wrapper.properties也不起作用,此時IDEA圖形化的操作只會使用你在外面配置的gradle,而不會使用gradle wrapper,即項目指定的gradle。
  • 配置 User gradle frome: gradle-wrapper.properties:
    • 在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章