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