Maven鏡像(mirror)


如果一個倉庫 A 可以提供另一個倉庫 B 的所有內容,那么就可以認為倉庫 A 是倉庫 B 的一個鏡像。即倉庫 B 中的任何一個構件都能從它的鏡像中獲取。

使用鏡像代替中央倉庫

國內開發人員由於網絡原因,直接從中央倉庫下載構件時,速度較慢或不穩定,我們通常會使用中央倉庫的國內鏡像站來解決該問題。

配置 Maven 鏡像的方法也非常的簡單,我們只需要在 Maven 安裝目錄中 setting.xml 文件的 mirrors 節點中,使用 mirror 標簽添加鏡像的相關信息即可。

阿里雲鏡像地址

<mirror>
    <id>aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

華為雲鏡像地址

<mirror>
    <id>huaweicloud</id>
    <name>mirror from maven huaweicloud</name>
    <mirrorOf>central</mirrorOf>
    <url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>

以上配置中,mirrorOf 的取值為 central,表示該配置為中央倉庫的鏡像,所有對於中央倉庫的請求都會轉到該鏡像。當然,我們也可以使用以上方式配置其他倉庫的鏡像。另外三個元素 id、name 和 url 分別表示鏡像的唯一標識、名稱和地址。

鏡像與 Maven 私服配合使用

鏡像通常會和 Maven 私服配合使用,由於 Maven 私服可以代理所有外部的公共倉庫(包括中央倉庫),因此對於組織內部的用戶來說,使用一個私服就相當於使用了所有需要的外部倉庫,這樣就可以將配置集中到私服中,簡化 Maven 本身的配置。這種情況下,用戶所有所需的構件都可以從私服中獲取,此時私服就是所有倉庫的鏡像。

<srttings>
...
    <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <name>nexus</name>
            <url></url>
        </mirror>
    </mirrors>
...
</settings>

以上配置中,mirrorOf 元素的取值為 * ,表示匹配所有遠程倉庫,所有對於遠程倉庫的請求都會被攔截,並跳轉到 url 元素指定的地址。

為了滿足一些較為復雜的需求,Maven 還支持一些更為高級的配置。

    • <mirrorOf>*</mirrorOf>:匹配所有遠程倉庫。
    • <mirrorOf>external:*</mirrorOf>:匹配所有遠程倉庫,使用 localhost 和 file:// 協議的除外。即,匹配所有不在本機上的遠程倉庫。
    • <mirrorOf>repo1,repo2</mirrorOf>:匹配倉庫 repo1 和 repo2,使用逗號分隔多個遠程倉庫。
    • <mirrorOf>*,!repo1</miiroOf>:匹配所有遠程倉庫,repo1 除外,使用感嘆號將倉庫從匹配中排除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM