一、Gradle安裝
1、Gradle安裝
(1)先安裝JDK/JRE
(2)Gradle下載官網 Gradle官網
(3)解壓安裝包到想安裝到的目錄。如D:\java\gradle-5.2.1
(4)配置環境變量。
變量名:GRADLE_HOME
變量值:解壓到的目錄
(5)添加到path
變量名:Path
變量值:%GRADLE_HOME%\bin;
2、Gradle配置
(1)配置本地倉庫
變量名:GRADLE_USER_HOME
變量值:自定義Gradle倉庫目錄或者Maven的倉庫目錄
(2)配置倉庫源
在Gradle安裝目錄下的 init.d 文件夾下,新建一個 init.gradle 文件,里面填寫以下配置。
allprojects {
repositories {
maven { url 'file:///C:/Java/maven_repository'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
repositories中寫的是獲取jar包的順序。先是本地的Maven倉庫路徑;接着的mavenLocal()是獲取Maven本地倉庫的路徑,應該是和第一條一樣,但是不沖突;第三條和第四條是從國內和國外的網絡上倉庫獲取;最后的 mavenCentral() 是從Apache提供的中央倉庫獲取jar包。
(3)配置到IDEA
在IDEA的Setting里打開"Build, Execution, Deployment"-"Build Tools"-"Gradle"。
勾選 Use local Gradle distribution,在 Gradle home中選擇安裝的Gradle的路徑。
如果在變量和配置文件中設置了Gradle的倉庫路徑,在Service directory path中就會自動填寫地址,如果想改的話可以手動修改。
二、Gradle倉庫配置
1、本地倉庫配置
配置環境變量GRADLE_USER_HOME,並指向你的一個本地目錄,用來保存Gradle下載的依賴包。
2、遠程倉庫配置
一般Gradle、maven從中央倉庫mavenCentral()(http://repo1.maven.org/maven2/)下載依賴包,但是在國內下載速度巨慢,我們只能使用國內的鏡像。
所以每個Gradle構建的項目中,我們可以在build.gradle做如下配置
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
mavenCentral()
}
3、全局倉庫配置
每個項目都單獨配置難免麻煩些,我們可以配置一個全局配置文件。gradle加載全局配置按優先級順序有如下四種方式:
(1)通過--I 或者--init-script參數在構建開始時指定路徑,如
gradle --init-script init.gradle clean
gradle --I init.gradle clean
init.gradle文件示例:
allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
}
}
}
(2)加載USER_HOME/.gradle/init.gradle文件
(3)加載USER_HOME/.gradle/init.d/目錄下的以.gradle結尾的文件
(4)加載GRADLE_HOME/init.d/目錄下的以.gradle結尾的文件
三、Gradle倉庫配置詳解
支持的類型有如下幾種:
類型 | 說明 |
---|---|
Maven central repository | 這是Maven的中央倉庫,無需配置,直接聲明就可以使用。但不支持https協議訪問 |
Maven JCenter repository | JCenter中央倉庫,實際也是是用的maven搭建的,但相比Maven倉庫更友好,通過CDN分發,並且支持https訪問。 |
Maven local repository | Maven本地的倉庫,可以通過本地配置文件進行配置 |
Maven repository | 常規的第三方Maven倉庫,可設置訪問Url |
Ivy repository | Ivy倉庫,可以是本地倉庫,也可以是遠程倉庫 |
Flat directory repository | 使用本地文件夾作為倉庫 |
1、Maven central repository
在build.gradle中配置:
repositories {
mavenCentral()
}
就可以直接使用了。
2、Maven JCenter repository
最常用也是Android Studio默認配置:
repositories {
jcenter()
}
這時使用jcenter倉庫是通過https訪問的,如果想切換成http協議訪問,需要修改配置:
repositories {
jcenter {
url "http://jcenter.bintray.com"
}
}
3、Local Maven repository
可以使用Maven本地的倉庫。默認情況下,本地倉庫位於USER_HOME/.m2/repository(例如windows環境中,在C:\Users\NAME.m2.repository),同時可以通過USER_HOME/.m2/下的settings.xml配置文件修改默認路徑位置。
若使用本地倉庫在build.gradle中進行如下配置:
repositories {
mavenLocal()
}
4、Maven repositories
第三方的配置也很簡單,直接指明url即可:
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
5、ivy repositories
配置如下:
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
6、Flat directory repository
使用本地文件夾,這個也比較常用。直接在build.gradle中聲明文件夾路徑:
repositories {
flatDir {
dirs 'lib'
}
flatDir {
dirs 'lib1', 'lib2'
}
}
使用本地文件夾時,就不支持配置元數據格式的信息了(POM文件)。並且Gradle會優先使用服務器倉庫中的庫文件:例如同時聲明了jcenter和flatDir,當flatDir中的庫文件同樣在jcenter中存在,gradle會優先使用jcenter的。
7、常用倉庫
repositories {
mavenCentral()
maven { url "https://jitpack.io" }
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
https://plugins.gradle.org/m2/
maven { url 'http://maven.oschina.net/content/groups/public/' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url "http://maven.springframework.org/release" }
maven { url "http://maven.restlet.org" }
maven { url "http://mirrors.ibiblio.org/maven2" }
maven {
url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
}
maven { url 'https://maven.fabric.io/public' }
jcenter()
google()
}
四、Gradle Wrapper使用
對於所有Gradle項目來說,都推薦使用Gradle Wrapper,甚至應該將其當做創建代碼庫之后的第一件事來做。使用Gradle Wrapper有以下好處:
(1)不用安裝Gradle也能運行Gradle
(2)所有人使用相同版本的Gradle
在build.gradle中加入以下配置:
task wrapper(type: Wrapper) {
gradleVersion = '4.6'
}
然后再運行gradle wrapper,此時會生成gradlew、gradle.bat兩個文件和gradle目錄。這里的gradlew和gradle.bat是腳本文件,在使用gradle命令的地方替換為gradlew或gradle.bat,它們將自動下載指定版本的gradle,然后使用該版本進行項目構建。
請注意,這3個文件是要提交到代碼庫上的,當項目其他人拿到代碼之后,由於gradlew和gradle.bat均在源代碼中,他們本地即使沒有安裝gradle,也能通過./gradlew build命令進行項目構建。
參考[1]Gradle的安裝與配置
[2]Gradle學習(一)gradle本地、遠程倉庫配置
[3]Gradle倉庫配置
[4]一篇文章講清楚Gradle與Gradle Wrapper的區別