背景說明
針對Java項目Gradle是一個流行的構(gòu)建工具,比如Cas就是用其構(gòu)建的,再調(diào)試一些開源項目過程中,時常遇到需要搭建Gradle環(huán)境。
解決方案
配置本地倉庫
在build.gradle文件中,使用mavenLocal()
repositories {
mavenLocal() //直接使用本地maven倉庫
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
mavenCentral()
}
查找依賴路徑
發(fā)現(xiàn)使用mavenLocal() 時Gradle默認(rèn)會按以下順序去查找本地的maven倉庫:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository
注意,環(huán)境變量要加入M2_HOME, 我們配環(huán)境時很多時候都是使用MAVEN_HOME或者直接在path中輸入bin路徑了,導(dǎo)致mavenLocal無法生效。另外,如果本地沒有相關(guān)jar包,gradle會在下載到USER_HOME/.gradle文件夾下,若想讓gradle下載到指定文件夾,配置GRADLE_USER_HOME環(huán)境變量。


加速構(gòu)建設(shè)置
Gradle有個 Daemon配置,開啟這個配置能有效的提高編譯速度構(gòu)建設(shè)置。
在咱們的gradle倉庫.gradle目錄下創(chuàng)建一個gradle.properties 文件 ,再打開該文件在其中添加如下語句保存即可:
org.gradle.daemon=true
配置阿里倉庫
1.在%GRADLE_USER_HOME%或者USER_HOME/.gradle/[GRADLE_USER_HOME未配置]目錄下
2. %GRADLE_HOME%的init.d目錄下
以上兩個目錄均創(chuàng)建名為init.gradle文件,內(nèi)容如下:
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
引入本地倉庫
在build.gradle中加入:
def lmr = 'file://' + new File('/maven/repo').absolutePath
repositories {
mavenCentral()
mavenLocal()
maven { url lmr }
}
注意:/maven/repo是maven本地倉庫地址
然后在配置文件中的repositories下添加mavenLocal():
repositories {
mavenLocal()
mavenCentral()
}
之后有依賴添加時,gradle會先從本地倉庫中尋找對應(yīng)的jar包依賴,實現(xiàn)jar包的重復(fù)利用。
實際操作方式是gradle找到maven對應(yīng)的jar包,然后復(fù)制一份自己用,所以當(dāng)你的倉庫是gradle和maven混合使用時,大概率會有兩份數(shù)據(jù)冗余;gradle倉庫與maven倉庫是相互獨立和冗余的。
默認(rèn)依賴位置
Mac系統(tǒng)默認(rèn)下載到:/Users/(用戶名)/.gradle/caches/modules-2/files-2.1
Windows系統(tǒng)默認(rèn)下載到:C:\Users(用戶名).gradle\caches\modules-2\files-2.1
加速
強(qiáng)制更新依賴
如果你正在開發(fā)一個庫,并將它傳上 jcenter 或者 jitpack,由于沒上線,于是你一直上傳 1.0 的版本,不停地覆蓋遠(yuǎn)程倉庫上的版本,但是你遺憾地發(fā)現(xiàn)本地的 gradle 出了問題,那么是由于 gradle 在下載依賴的同時自動將其緩存了一份在本地,所以等你第二次開啟一個項目并依賴同一個庫的同一個版本的時候,gradle 實際上只是拿了本地的緩存,但是這份小聰明,對于我前面所說的情況下的開發(fā)人員來說就是一個大麻煩,應(yīng)當(dāng)使用如下命令行命令來強(qiáng)制 gradle 拉去遠(yuǎn)程依賴數(shù)據(jù)。
Windows
gradlew build --refresh-dependencies
Mac
./gradlew build --refresh-dependencies
注意實現(xiàn)
--refresh 與 -dependencies 不應(yīng)有空格存在,-dependencies 以參數(shù)形式依賴于 –refresh
IDEA環(huán)境配置
解釋參考

確定配置
