Maven、Gradle 配置国内镜像源
Maven
全局配置
修改 Maven 默认的全局配置文件:
-
类 Unix
系统: Mac OS / Linux 默认在 ~/.m2/settings.xml - Windows 系统:一般在 Maven 安装目录的 conf/settings.xml
aliyunmaven aliyun maven * https://maven.aliyun.com/repository/public
单项目配置
修改项目的 pom.xml,添加以下内容:
aliyunmaven https://maven.aliyun.com/repository/public
Gradle
全局配置
在 ${USER_HOME}/.gradle/
目录下创建 init.gradle
文件,添加以下内容:
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 } } }
单项目配置
修改项目的 build.gradle 文件,添加以下内容:
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/public' } } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } } }
也可以直接添加在 repositories 内:
repositories { maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() }
其他仓库
在上面的配置中,我们主要配置的是 public 仓库,而 阿里云: https://maven.aliyun.com 除此之外,还代理了许多其他的仓库,可作为下载源。如 google、spring 等(更多可点进链接查看详情)。
而我们常用的 public 仓库,其实是 central: https://repo1.maven.org/maven2/ 仓库和 jcenter: http://jcenter.bintray.com/ 仓库的聚合,所以配置了 public 仓库,就不需要再配置 jcenter 的仓库了。
若需要使用其他的代理仓库,如 google、spring,可参考以下配置:
Maven
全局配置
同上,修改 settings.xml 文件:
alimaven-public aliyun public maven repo https://maven.aliyun.com/repository/public * alimaven-google aliyun google maven repo https://maven.aliyun.com/repository/google * alimaven-spring aliyun spring maven repo https://maven.aliyun.com/repository/spring * <!-- nexus-tencentyun * Nexus tencentyun http://mirrors.cloud.tencent.com/nexus/repository/maven-public/ --> <!-- netease * Netease maven http://mirrors.163.com/maven/repository/maven-public/ -->
单项目配置
修改 pom.xml:
aliyunmaven-google aliyun google maven repo https://maven.aliyun.com/repository/google default true false aliyunmaven-spring aliyun spring maven repo https://maven.aliyun.com/repository/spring
是否开启 releases、snapshots 版下载可根据自身需求调整。
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 } } }
单项目配置
修改 `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
nexus-tencentyun * Nexus tencentyun http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
nexus-tencentyun Nexus tencentyun http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
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: 阿里云在前几年对 https://maven.aliyun.com 进行了代码和架构上的改造,新版的 https://maven.aliyun.com 下载速度更快,支持高并发,而且全站进行了 HTTPS 加密,更安全。而新版的 Maven Mirror 地址,就是 https://maven.aliyun.com/repository/{reponame},然而阿里云为了保持旧地址的兼容,所以旧地址依然可以使用,但推荐使用新地址。
更多详情可参考: https://yq.aliyun.com/articles/621196?commentId=21341