Maven、Gradle 配置國內鏡像源

Maven、Gradle 配置國內鏡像源

Maven

全局配置

修改 Maven 默認的全局配置文件:

  • 類 Unix 系統: Mac OS / Linux 默認在 ~/.m2/settings.xml
  • Windows 系統:一般在 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>

單項目配置

修改項目的 pom.xml,添加以下內容:

<repositories>
    <repository>
        <id>aliyunmaven</id>
        <url>https://maven.aliyun.com/repository/public</url>
    </repository>
</repositories>

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 倉庫,而 阿里雲 除此之外,還代理了許多其他的倉庫,可作爲下載源。如 googlespring 等(更多可點進鏈接查看詳情)。

而我們常用的 public 倉庫,其實是 central 倉庫和 jcenter 倉庫的聚合,所以配置了 public 倉庫,就不需要再配置 jcenter 的倉庫了。

若需要使用其他的代理倉庫,如 googlespring,可參考以下配置:

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>

單項目配置

修改 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>
        <!-- 是否開啓 release 版構件下載 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否開啓 snapshot 版構件下載 -->
        <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>

是否開啓 releasessnapshots 版下載可根據自身需求調整。

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

 <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: 阿里雲在前幾年對 https://maven.aliyun.com 進行了代碼和架構上的改造,新版的 https://maven.aliyun.com 下載速度更快,支持高併發,而且全站進行了 HTTPS 加密,更安全。而新版的 Maven Mirror 地址,就是 https://maven.aliyun.com/repository/{reponame},然而阿里云爲了保持舊地址的兼容,所以舊地址依然可以使用,但推薦使用新地址。

更多詳情可參考: 【FAQ】新版 maven.aliyun.com 答疑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章