淺析IDEA如何正確配置Gradle? GRADLE_USER_HOME 和 Gradle user home的區(qū)別
緣起
網(wǎng)上已經(jīng)有了如此多的IDEA配置Gradle的文章,為何本菜鳥還想再寫一篇這樣的水文呢? 原因是按照網(wǎng)上大多數(shù)的配置,Gradle并不能按照你的想法很好的工作,倒不是說根據(jù)其他大佬的博客不能構(gòu)建,而是你在構(gòu)建時(shí)會發(fā)現(xiàn)IDEA使用的Gradle版本并不是wrapper中指定的版本。
目標(biāo)
正確配置IDEA(2019.2.4), 使得在Terminal中執(zhí)行以gradlew開頭命令和操作圖形化的IDEA使用Gradle版本是同一個(gè)版本。


GRADLE_USER_HOME和Gradle user home的區(qū)別
GRADLE_USER_HOME
- GRADLE_USER_HOME指的是你需要配置的環(huán)境變量。該環(huán)境變量決定了執(zhí)行 project/gradle/gradle-rapper.jar時(shí)下載 project/gradle/gradle-wrapper.properties中指定版本gradle的存放位置。
- 簡言之:在命令行中輸入的以gradlew的開頭的命令會使用GRADLE_USER_HOME指定環(huán)境變量所在位置來存放下載的gradle.
- 注意:必須是gradlew開頭的命令,不能是gradle開頭的命令。原因是gradlew開頭的命令說明你想使用gradle wrapper, 而gradle開頭的命令則是使用的你配置在環(huán)境變量當(dāng)中的gradle,這兩個(gè)是不一樣的

Gradle user home
- Gradle user home指的是IDEA中關(guān)于gradle的配置,該配置指是給IDEA使用的,當(dāng)你在IDEA中點(diǎn)擊gradle相關(guān)的圖形按鈕時(shí),譬如gradle構(gòu)建任務(wù)的按鈕或者是Enable-AutoImport按鈕時(shí)會使用Gradle user home指定的目錄下載project/gradle/gradle-wrapper.properties指定的gradle版本
- 簡言之:在IDEA中的各種圖形化操作都是使用這個(gè)目錄去保存下載的gradle。


IDEA Gradle user home的坑
Gradle user home配置的不好的話是有一個(gè)大坑的,按照網(wǎng)上大多數(shù)的配置都會踩到這個(gè)坑,而且極不容易被發(fā)現(xiàn)。
這個(gè)坑的現(xiàn)象是:你在Terminal中輸入的gradlew的任何命令使用的gradle版本和IDEA中圖形化操作使用的gradle版本是不一致的。
造成這個(gè)坑的必要條件:
1、你下載了一個(gè)版本的Gradle版本,并且按照網(wǎng)上的博客配置了Gradle環(huán)境變量。
2、你在IDEA中配置了Gradle user home,并且該把該目錄指向了你在本地自己下載解壓的gradle。
如果你按照上面的配置,并且你自己單獨(dú)下載的gradle和project/gradle/gradle-wrapper.properties中指定版本不一致時(shí),你在IDEA中的Terminal中執(zhí)行和點(diǎn)擊IDEA圖形按鈕的版本并不一致。

如何驗(yàn)證這個(gè)坑?
可以在你下載的gradle/init.d目錄中寫一個(gè)名為 init.gradle的腳本。你需要在三個(gè)地方寫這個(gè)腳本,一個(gè)是你自己單獨(dú)下載的gradle,一個(gè)是GRADLE_USER_HOME中下載的gradle版本,一個(gè)是IDEA Gradle user home指定目錄中下載的grald中都加上,你就能清晰的看出到底當(dāng)前使用的是那個(gè)gradle.
allprojects {
println "using gradle wrapper v5.6.4 version!!!"
}
最終解決方案
- 第一種解決方案,不下載Gradle,不配置關(guān)于Gradle的任何的環(huán)境變量,不配置IDEA的Gradle user home這種方式對于向使用Gradle的小白來說比較方便。此時(shí)你創(chuàng)建IDEA工程時(shí),IDEA會自動下載工程目錄下gradle/gradle-wrapper.properties中指定的Gradle版本到你的家目錄的 .gradle目錄下。
- 實(shí)際上使用Gradle的確不需要自己額外安裝一個(gè)Gradle,gradle的設(shè)計(jì)者考慮到gradle會頻繁的升級因此每個(gè)gradle工程會帶有一個(gè)gradle的目錄,這個(gè)目錄主要作用就是描述當(dāng)前工程需要哪個(gè)版本的gradle,以及如何下載gradle. 因此你拿到別人的gradle項(xiàng)目,即使本機(jī)沒有安裝gradle,當(dāng)你執(zhí)行以gradlew開頭的命令時(shí)會自行下載這個(gè)項(xiàng)目想要的gradle版本。
第二種方案:如果你想自己安裝gradle,并且所有的工程都使用你自己單獨(dú)安裝的gradle。
- 配置Gradle的環(huán)境變量,使得在任意的路徑下可以執(zhí)行g(shù)radle的可執(zhí)行文件。
- 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路徑,這里的路徑實(shí)際上可以不指定。- 可選操作
- 配置 User from gradle指向安裝的gradle:

第三種解決方案,配置單獨(dú)的gradle,并且工程默認(rèn)使用gradle wrapper.
- 配置Gradle的環(huán)境變量,使得在任意的路徑下可以執(zhí)行g(shù)radle的可執(zhí)行文件。
- 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路徑,這里的路徑實(shí)際上可以不指定。
注意:如果想要指定Gradle user home,那么一定不要配置為你安裝的gradle所在目錄,否則即使制定了user gradle from : gradle-wrapper.properties也不起作用,此時(shí)IDEA圖形化的操作只會使用你在外面配置的gradle,而不會使用gradle wrapper,即項(xiàng)目指定的gradle。
- 配置 User gradle frome: gradle-wrapper.properties:

到此這篇關(guān)于IDEA如何正確配置Gradle? GRADLE_USER_HOME 和 Gradle user home的區(qū)別的文章就介紹到這了,更多相關(guān)IDEA配置Gradle內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot實(shí)現(xiàn)驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了spring boot實(shí)現(xiàn)驗(yàn)證碼功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Java如何使用JWT實(shí)現(xiàn)Token認(rèn)證機(jī)制
JWT(JSON Web Token)是一種用于在網(wǎng)絡(luò)上安全地傳輸信息的簡潔的、URL 安全的表示方法,本文主要介紹了Java如何使用JWT實(shí)現(xiàn)Token認(rèn)證機(jī)制,需要的可以參考下2024-10-10
解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況
這篇文章主要介紹了解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況,具有好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
tio-boot?jfinal-plugins框架整合redis示例詳解
這篇文章主要為大家介紹了tio-boot?jfinal-plugins框架整合redis示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
java本服務(wù)如何調(diào)用本服務(wù)接口
這篇文章主要介紹了java本服務(wù)如何調(diào)用本服務(wù)接口問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
linux系統(tǒng)下查看jdk版本、路徑及配置環(huán)境變量
在Linux系統(tǒng)中,配置JDK環(huán)境變量是非常重要的,它可以讓你在終端中直接使用Java命令,這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下查看jdk版本、路徑及配置環(huán)境變量的相關(guān)資料,需要的朋友可以參考下2024-01-01
SpringBoot整合Shiro思路(最新超詳細(xì))
這篇文章主要介紹了SpringBoot整合Shiro思路(最新超詳細(xì)),本文內(nèi)容比較長,通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
使用Java根據(jù)文件路徑下載zip文件到本地代碼示例
在開發(fā)過程中我們會遇到需要對文件進(jìn)行壓縮并下載的功能需求,這篇文章主要給大家介紹了關(guān)于如何使用Java根據(jù)文件路徑下載zip文件到本地的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
springboot實(shí)現(xiàn)過濾器的示例代碼
JavaWeb開發(fā)中,過濾器Filter是三大組件之一,主要用于請求攔截和響應(yīng)處理,如權(quán)限校驗(yàn)、日志記錄、請求過濾等,本文就來介紹一下springboot實(shí)現(xiàn)過濾器的示例代碼,感興趣的可以了解一下2024-10-10

