Maven宇姚、Gradle 配置國(guó)內(nèi)鏡像源
Maven
全局配置
修改 Maven 默認(rèn)的全局配置文件:
-
類(lèi) Unix
系統(tǒng):Mac OS
/Linux
默認(rèn)在~/.m2/settings.xml
-
Windows
系統(tǒng):一般在 Maven 安裝目錄的conf/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 添加以下這段 Mirror 配置 -->
<mirrors>
<!-- Aliyun -->
<mirror>
<id>aliyunmaven</id>
<name>aliyun maven</name>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>
單項(xiàng)目配置
修改項(xiàng)目的 pom.xml
匈庭,添加以下內(nèi)容:
<repositories>
<repository>
<id>aliyunmaven</id>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
Gradle
全局配置
在 ${USER_HOME}/.gradle/
目錄下創(chuàng)建 init.gradle
文件,添加以下內(nèi)容:
allprojects {
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public'
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
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
}
}
單項(xiàng)目配置
修改項(xiàng)目的 build.gradle
文件浑劳,添加以下內(nèi)容:
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
}
}
也可以直接添加在 repositories
內(nèi):
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
mavenCentral()
}
其他倉(cāng)庫(kù)
在上面的配置中阱持,我們主要配置的是 public
倉(cāng)庫(kù),而 阿里云 除此之外魔熏,還代理了許多其他的倉(cāng)庫(kù)衷咽,可作為下載源鸽扁。如 google
、spring
等(更多可點(diǎn)進(jìn)鏈接查看詳情)镶骗。
而我們常用的 public
倉(cāng)庫(kù)献烦,其實(shí)是 central 倉(cāng)庫(kù)和 jcenter 倉(cāng)庫(kù)的聚合,所以配置了 public
倉(cāng)庫(kù)卖词,就不需要再配置 jcenter
的倉(cāng)庫(kù)了。
若需要使用其他的代理倉(cāng)庫(kù)吏夯,如 google
此蜈、spring
,可參考以下配置:
Maven
全局配置
同上噪生,修改 settings.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<!-- Aliyun -->
<mirror>
<id>alimaven-public</id>
<name>aliyun public maven repo</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
<mirror>
<id>alimaven-google</id>
<name>aliyun google maven repo</name>
<url>https://maven.aliyun.com/repository/google</url>
<mirrorOf>*</mirrorOf>
</mirror>
<mirror>
<id>alimaven-spring</id>
<name>aliyun spring maven repo</name>
<url>https://maven.aliyun.com/repository/spring</url>
<mirrorOf>*</mirrorOf>
</mirror>
<!-- Tencent Cloud -->
<!-- <mirror>
<id>nexus-tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror> -->
<!-- Netease 163 -->
<!-- <mirror>
<id>netease</id>
<mirrorOf>*</mirrorOf>
<name>Netease maven</name>
<url>http://mirrors.163.com/maven/repository/maven-public/</url>
</mirror> -->
</mirrors>
</settings>
單項(xiàng)目配置
修改 pom.xml
:
<repositories>
<repository>
<id>aliyunmaven-google</id>
<name>aliyun google maven repo</name>
<url>https://maven.aliyun.com/repository/google</url>
<layout>default</layout>
<!-- 是否開(kāi)啟 release 版構(gòu)件下載 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否開(kāi)啟 snapshot 版構(gòu)件下載 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>aliyunmaven-spring</id>
<name>aliyun spring maven repo</name>
<url>https://maven.aliyun.com/repository/spring</url>
</repository>
</repositories>
是否開(kāi)啟 releases
裆赵、snapshots
版下載可根據(jù)自身需求調(diào)整。
Gradle
全局配置
allprojects {
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
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 $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
maven { url ALIYUN_GOOGLE_URL }
}
}
單項(xiàng)目配置
修改 build.gradle
:
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/spring' }
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/spring' }
}
}
其他鏡像源
騰訊云
https://mirrors.cloud.tencent.com
參考配置:
Maven
<mirror>
<id>nexus-tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
<repositories>
<repository>
<id>nexus-tencentyun</id>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</repository>
</repositories>
Gradle
buildscript {
repositories {
maven { url 'http://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
}
}
allprojects {
repositories {
maven { url 'http://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
}
}
FAQ
Q: 為什么你配置里用的 URL 都是 https://maven.aliyun.com/repository/public
跺嗽,而我看其他的人/文章战授,都用的是 http://maven.aliyun.com/nexus/content/groups/public
呢?
A: 阿里云在前幾年對(duì) https://maven.aliyun.com 進(jìn)行了代碼和架構(gòu)上的改造桨嫁,新版的 https://maven.aliyun.com 下載速度更快植兰,支持高并發(fā),而且全站進(jìn)行了 HTTPS 加密璃吧,更安全楣导。而新版的 Maven Mirror 地址,就是 https://maven.aliyun.com/repository/{reponame}
畜挨,然而阿里云為了保持舊地址的兼容筒繁,所以舊地址依然可以使用,但推薦使用新地址巴元。
更多詳情可參考: 【FAQ】新版 maven.aliyun.com 答疑