1. 程式人生 > >Gradle 修改本地倉庫的位置

Gradle 修改本地倉庫的位置

老話,適合的才是最好的。
此處不做gradle和maven的比較。只說下我,一個偏執的maven使用者如何嘗試使用gradle的經驗。

我用maven好些年了,自己機器上還搭了個nexus。
最近看到有個demo需要gradle才能跑起來,於是打算嘗試下。

首先gradle的下載、配置,對一個程式猿來說,這都不是事,如果這都搞不定,可能你有點點不太適合做這一行。
Win7下,直接用setx設定環境變數。
先設定gradle的安裝目錄或者說是解壓縮出來的目錄,這個目錄下至少應該保留有bin、lib,其他檔案或者目錄偏執狂可以盡情刪掉。

setx GRADLE_HOME "E:\gradle"

再把gradle的可執行檔案路徑加入到Path變數裡。為什麼要加?因為想不帶路徑的執行一個命令(exe、bat、cmd之類),就需要在命令搜尋路徑列表中把這個命令所在的路徑加進去。

setx Path ".;%%GRADLE_HOME%%\bin;"

gradle和maven一樣,都是要把jar包下到本地快取起來的。
gradle可以複用maven的私有倉庫和中央倉庫。中央倉庫什麼的先不管,偏執狂大多關心的是gradle如何先複用maven已經下好的jar包,那些沒有的jar包再下到gradle的快取目錄。

gradle官網和度娘給出的一些教程上,都說

repositories {
   mavenLocal()
}

命令列切到demo目錄,執行gradle jettyRun試了試,C盤使用者目錄刷刷的下東西。
原因是gradle預設是下載C盤使用者目錄的。
度娘是不會告訴你如何設定一個長期的快取目錄的。谷哥知道,但是需要懂科學。
谷哥給了多種設定方法:系統環境變數、jvm環境變數、gradle命令列引數等等。我選擇比較簡單也相對長期的系統環境變數設定方式。
把gradle快取目錄指向了gradle安裝目錄下的.gradle目錄

setx GRADLE_USER_HOME %GRADLE_HOME%\.gradle

設定完成後,刪了C盤使用者目錄gradle下的東西。重新啟動gradle jettyRun。這回沒往C盤使用者目錄寫了,寫在了%GRADLE_HOME%\.gradle 這個目錄裡。mavenLocal()拼寫沒錯啊,build.gradle也沒錯啊,但是以往maven下過的jar包還是在重複下,果斷ctrl+c。

度娘問了半天是沒結果的,從谷哥給的建議找到官網,上面介紹了複用maven本地倉庫的搜尋路徑,主要是通過maven的settings.xml。
maven配置用的預設的那些朋友,自然不會碰到我這樣的問題。因為可以直接在C盤使用者目錄找到這個settings.xml。
如果設定了M2_HOME的那些朋友,自然也不會碰到我這樣的問題。因為可以直接在M2_HOME下的conf目錄找到這個settings.xml。

像我這樣只配了maven可執行路徑到Path環境變數的朋友,自然會碰到我這樣的問題。解決方法很easy,把M2_HOME這個環境變數加上,值就是maven的安裝目錄。

setx M2_HOME %MAVEN_HOME%

設定完成後,刪了%GRADLE_HOME%\.gradle 這個目錄的東西。重新啟動gradle jettyRun。愉快的看著demo順利啟動了,沒有重複下jar包,都利用的maven本地倉庫已有的包。

送給愛折騰想嘗試gradle的mavener。

題外話,eclipse的maven外掛最近幾個版本好像是已經集成了。起碼kepler和luna都有的。gradle的外掛要從springsource的外掛庫去裝。蛋疼的CMCC網速下了好幾次到一半都timeout了,幸好照貓畫虎借了點科學姿勢,配了代理順利安裝好了。gradle的外掛裡面的配置,建議手工寫成gradle安裝目錄的地址。用預設配置的話,會自己下個gradle並且把快取下到C盤。

很多時候需要找jar包的依賴樹,maven的外掛很直觀的看到,gradle外掛就比較頭疼了,鐵定是我不會用。想來想去,雖然gradle比較簡潔、強大(執行自定義任務方面),最後還是覺得maven比較適合我,對我來說maven這個工具也算是最好的了。