溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

發(fā)布時(shí)間:2020-08-10 10:03:07 來源:億速云 閱讀:3930 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下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í)會(huì)發(fā)現(xiàn)IDEA使用的Gradle版本并不是wrapper中指定的版本。

目標(biāo)

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

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

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的存放位置。
  • 簡(jiǎn)言之:在命令行中輸入的以gradlew的開頭的命令會(huì)使用GRADLE_USER_HOME指定環(huán)境變量所在位置來存放下載的gradle.
  • 注意:必須是gradlew開頭的命令,不能是gradle開頭的命令。原因是gradlew開頭的命令說明你想使用gradle wrapper, 而gradle開頭的命令則是使用的你配置在環(huán)境變量當(dāng)中的gradle,這兩個(gè)是不一樣的

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

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í)會(huì)使用Gradle user home指定的目錄下載project/gradle/gradle-wrapper.properties指定的gradle版本
  • 簡(jiǎn)言之:在IDEA中的各種圖形化操作都是使用這個(gè)目錄去保存下載的gradle。

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

IDEA Gradle user home的坑

Gradle user home配置的不好的話是有一個(gè)大坑的,按照網(wǎng)上大多數(shù)的配置都會(huì)踩到這個(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。

如果你按照上面的配置,并且你自己?jiǎn)为?dú)下載的gradle和project/gradle/gradle-wrapper.properties中指定版本不一致時(shí),你在IDEA中的Terminal中執(zhí)行和點(diǎn)擊IDEA圖形按鈕的版本并不一致。

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

如何驗(yàn)證這個(gè)坑?

可以在你下載的gradle/init.d目錄中寫一個(gè)名為 init.gradle的腳本。你需要在三個(gè)地方寫這個(gè)腳本,一個(gè)是你自己?jiǎn)为?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這種方式對(duì)于向使用Gradle的小白來說比較方便。此時(shí)你創(chuàng)建IDEA工程時(shí),IDEA會(huì)自動(dòng)下載工程目錄下gradle/gradle-wrapper.properties中指定的Gradle版本到你的家目錄的 .gradle目錄下。
  • 實(shí)際上使用Gradle的確不需要自己額外安裝一個(gè)Gradle,gradle的設(shè)計(jì)者考慮到gradle會(huì)頻繁的升級(jí)因此每個(gè)gradle工程會(huì)帶有一個(gè)gradle的目錄,這個(gè)目錄主要作用就是描述當(dāng)前工程需要哪個(gè)版本的gradle,以及如何下載gradle. 因此你拿到別人的gradle項(xiàng)目,即使本機(jī)沒有安裝gradle,當(dāng)你執(zhí)行以gradlew開頭的命令時(shí)會(huì)自行下載這個(gè)項(xiàng)目想要的gradle版本。

第二種方案:如果你想自己安裝gradle,并且所有的工程都使用你自己?jiǎn)为?dú)安裝的gradle。

  • 配置Gradle的環(huán)境變量,使得在任意的路徑下可以執(zhí)行g(shù)radle的可執(zhí)行文件。
  • 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路徑,這里的路徑實(shí)際上可以不指定。- 可選操作
  • 配置 User from gradle指向安裝的gradle:

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

第三種解決方案,配置單獨(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圖形化的操作只會(huì)使用你在外面配置的gradle,而不會(huì)使用gradle wrapper,即項(xiàng)目指定的gradle。

  • 配置 User gradle frome: gradle-wrapper.properties:

IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么

以上是IDEA配置Gradle的方法及GRADLE_USER_HOME和Gradle user home的區(qū)別是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI