最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven多倉庫多鏡像源配置過程

 更新時間:2025年11月14日 08:56:21   作者:ideal-cs  
本文詳細介紹了Maven中的倉庫(Repository)和鏡像(Mirror)配置,包括它們的區(qū)別、分類、配置位置、注意事項以及協(xié)同工作流程,通過多倉庫配置,可以解決依賴來源多樣性問題;通過多鏡像配置,可以提高下載效率并統(tǒng)一管理

一、核心概念:倉庫(Repository)與鏡像(Mirror)

在講解配置前,需先明確兩個核心概念的區(qū)別:

二、多倉庫配置:原理與方式

Maven 支持配置多個遠程倉庫,用于獲取不同來源的依賴(例如:中央倉庫沒有的依賴,可能在 Spring 倉庫、Google 倉庫中存在)。

1. 倉庫的分類

(1)本地倉庫

默認位于~/.m2/repository ,所有下載的依賴都會緩存到這里,優(yōu)先從本地倉庫獲取依賴。

(2)遠程倉庫:三類

  • 中央倉庫(Maven 默認內(nèi)置): https://repo1.maven.org/maven2/ ,存儲大部分開源依賴。
  • 第三方倉庫: 例如,Spring 倉庫(https://repo.spring.io/release/)、Google 倉庫(https://maven.google.com/)等,存儲特定框架的依賴。
  • 私有倉庫: 企業(yè)內(nèi)部搭建的倉庫(如 Nexus、Artifactory),存儲內(nèi)部構件或代理外部倉庫。

2. 多倉庫的配置位置

遠程倉庫的配置有兩個級別,優(yōu)先級不同:

3. 多倉庫配置示例

(1)在pom.xml中配置項目級倉庫

<project>
  <!-- 其他配置 -->
  <repositories>
    <!-- 中央倉庫(Maven默認已內(nèi)置,可省略) -->
    <repository>
      <id>central</id>
      <name>Maven Central Repository</name>
      <url>https://repo1.maven.org/maven2/</url>
      <releases>
        <enabled>true</enabled> <!-- 允許下載release版本 -->
      </releases>
      <snapshots>
        <enabled>false</enabled> <!-- 禁止下載snapshot版本(不穩(wěn)定) -->
      </snapshots>
    </repository>

    <!-- Spring倉庫(獲取Spring相關依賴) -->
    <repository>
      <id>spring-releases</id>
      <name>Spring Releases Repository</name>
      <url>https://repo.spring.io/release/</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>false</enabled></snapshots>
    </repository>

    <!-- Google倉庫(獲取Android相關依賴) -->
    <repository>
      <id>google</id>
      <name>Google Repository</name>
      <url>https://maven.google.com/</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>false</enabled></snapshots>
    </repository>
  </repositories>
</project>

(2)在maven安裝目錄/conf/settings.xml中配置全局級倉庫

<settings>
  <!-- 其他配置 -->
  <profiles>
    <profile>
      <id>custom-repos</id>
      <repositories>
        <!-- 私有倉庫(企業(yè)內(nèi)部依賴) -->
        <repository>
          <id>company-private</id>
          <url>http://nexus.company.com/repository/maven-public/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <!-- 其他共用倉庫 -->
      </repositories>
    </profile>
  </profiles>

  <!-- 激活上述profile,使其生效 -->
  <activeProfiles>
    <activeProfile>custom-repos</activeProfile>
  </activeProfiles>
</settings>

4. 多倉庫配置注意事項

  • 倉庫 ID 唯一性: 每個倉庫的id必須唯一(Maven 通過id識別倉庫),否則會導致沖突。
  • releases/snapshots開關: 通過enabled控制是否允許從該倉庫下載正式版 / 快照版依賴(快照版不穩(wěn)定,生產(chǎn)環(huán)境通常關閉)。
  • 優(yōu)先級: pom.xml中的倉庫優(yōu)先級高于settings.xml,即項目級配置會覆蓋全局配置(如需全局生效,建議配置在settings.xml)。

三、多鏡像源配置:原理與規(guī)則

鏡像的核心作用是 “替代遠程倉庫”,當配置多個鏡像時,需通過mirrorOf屬性明確每個鏡像替代哪些倉庫,避免沖突。

1. 鏡像的配置位置

鏡像只能在settings.xml的<mirrors>標簽中配置(全局生效),無法在pom.xml中配置(保證鏡像的全局統(tǒng)一性)。

2. 多鏡像配置的核心:mirrorOf規(guī)則

mirrorOf是鏡像配置的靈魂,用于指定 “當前鏡像替代哪些倉庫”,其值通過倉庫的id匹配(倉庫id在<repository>中定義)。常見規(guī)則如下:

3. 多鏡像配置示例

假設需求:用阿里云加速中央倉庫,用華為云加速 Spring 倉庫,同時保留私有倉庫直接訪問。

<settings>
  <!-- 其他配置 -->
  <mirrors>
    <!-- 1. 阿里云鏡像:替代中央倉庫(id=central) -->
    <mirror>
      <id>aliyun-central</id>
      <name>Aliyun Mirror for Central</name>
      <url>https://maven.aliyun.com/repository/central</url>
      <mirrorOf>central</mirrorOf> <!-- 僅替代中央倉庫 -->
    </mirror>

    <!-- 2. 華為云鏡像:替代Spring倉庫(id=spring-releases) -->
    <mirror>
      <id>huawei-spring</id>
      <name>Huawei Mirror for Spring</name>
      <url>https://repo.huaweicloud.com/repository/spring/</url>
      <mirrorOf>spring-releases</mirrorOf> <!-- 僅替代Spring倉庫 -->
    </mirror>

    <!-- 3. 全局鏡像:替代所有倉庫,但排除私有倉庫(id=company-private) -->
    <mirror>
      <id>global-mirror</id>
      <name>Global Mirror (exclude private)</name>
      <url>https://repo.example.com/maven/</url>
      <mirrorOf>*,!company-private</mirrorOf> <!-- 排除私有倉庫 -->
    </mirror>
  </mirrors>
</settings>

4. 多鏡像的匹配優(yōu)先級

Maven 按<mirrors>中鏡像的配置順序匹配,一旦找到第一個符合mirrorOf規(guī)則的鏡像,就會使用該鏡像,后續(xù)鏡像不再生效。因此:

  • 精確匹配的鏡像(如mirrorOf=central)應放在模糊匹配鏡像(如mirrorOf=*)前面,避免被覆蓋。
  • 優(yōu)先級高的鏡像(如速度快的國內(nèi)鏡像)應放在前面。

四、多倉庫與多鏡像的協(xié)同工作流程

當 Maven 需要下載一個依賴時,整體流程如下:

(1)檢查本地倉庫:如果依賴已存在,直接使用,流程結束。

(2)查找遠程倉庫:根據(jù)pom.xml或settings.xml中配置的遠程倉庫列表,確定需要訪問的倉庫(按配置順序)。

(3)匹配鏡像:對每個遠程倉庫,檢查是否有鏡像的mirrorOf匹配該倉庫的id:

  • 若有匹配的鏡像,使用鏡像地址下載依賴。
  • 若沒有匹配的鏡像,直接訪問原倉庫地址下載。

(4)緩存到本地倉庫(僅只有一個):下載成功后,將依賴緩存到本地倉庫,供后續(xù)使用

五、總結

(1)多倉庫解決 “依賴來源多樣性” 問題,通過配置多個遠程倉庫獲取不同構件,可在pom.xml(項目級)或settings.xml(全局級)中配置。

(2)多鏡像解決 “下載效率與統(tǒng)一管理” 問題,通過mirrorOf規(guī)則指定替代的倉庫,僅在settings.xml中配置。

(3)核心是理解mirrorOf的匹配規(guī)則和鏡像與倉庫的協(xié)同流程,避免鏡像覆蓋必要的倉庫,確保依賴能正常下載。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring Boot 2.x基礎教程之使用@Scheduled實現(xiàn)定時任務的方法

    Spring Boot 2.x基礎教程之使用@Scheduled實現(xiàn)定時任務的方法

    在Spring Boot中編寫定時任務是非常簡單的事,下面通過實例介紹如何在Spring Boot中創(chuàng)建定時任務,實現(xiàn)每過5秒輸出一個當前時間,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java使用LinkedHashMap進行分數(shù)排序

    Java使用LinkedHashMap進行分數(shù)排序

    這篇文章主要介紹了Java使用LinkedHashMap進行分數(shù)排序的相關代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java排序的那些事之sort方法的使用詳解

    Java排序的那些事之sort方法的使用詳解

    sort方法用于對數(shù)組的元素進行排序。排序順序可以是字母或數(shù)字,并按升序或降序。默認排序順序為按字母升序,當數(shù)字是按字母順序排列時"40"將排在"5"前面。使用數(shù)字排序,你必須通過一個函數(shù)作為參數(shù)來調(diào)用。這些說起來可能很難理解,你可以通過本篇文章進一步了解它
    2021-09-09
  • Java中方法重寫與重載的區(qū)別

    Java中方法重寫與重載的區(qū)別

    大家好,本篇文章主要講的是Java中方法重寫與重載的區(qū)別,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 修改jvm-sandbox源碼導致線程安全分析

    修改jvm-sandbox源碼導致線程安全分析

    這篇文章主要為大家介紹了修改jvm-sandbox源碼導致線程安全分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • java線程池參數(shù)舉例詳解(附詳細代碼)

    java線程池參數(shù)舉例詳解(附詳細代碼)

    這篇文章主要介紹了Java線程池的工作原理、構造方法和關鍵參數(shù),它還提供了線程池的工作流程、常用線程池實現(xiàn)及參數(shù)優(yōu)化建議,幫助開發(fā)者更好地管理和優(yōu)化線程池,需要的朋友可以參考下
    2025-02-02
  • mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉義的實現(xiàn)

    mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉義的實現(xiàn)

    XML 文件在解析時會將五種特殊字符進行轉義,本文主要介紹了mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉義的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 高內(nèi)聚低耦合原則_動力節(jié)點Java學院整理

    高內(nèi)聚低耦合原則_動力節(jié)點Java學院整理

    耦合度就是某模塊(類)與其它模塊(類)之間的關聯(lián)、感知和依賴的程度,是衡量代碼獨立性的一個指標,也是軟件工程設計及編碼質(zhì)量評價的一個標準
    2017-08-08
  • 圖文詳解JAVA實現(xiàn)哈夫曼樹

    圖文詳解JAVA實現(xiàn)哈夫曼樹

    所謂哈夫曼樹就是要求最小加權路徑長度,這是什么意思呢?簡而言之,就是要所有的節(jié)點對應的路徑長度(高度-1)乘以該節(jié)點的權值,然后保證這些結果之和最小。下面這篇文章就給大家詳細介紹
    2016-08-08
  • 淺談SpringMVC之視圖解析器(ViewResolver)

    淺談SpringMVC之視圖解析器(ViewResolver)

    本篇文章主要介紹了淺談SpringMVC之視圖解析器(ViewResolver),具有一定的參考價值,有興趣的可以了解一下
    2017-08-08

最新評論

新乡县| 霍城县| 清苑县| 乌兰县| 蒲江县| 灌阳县| 万盛区| 汕尾市| 泰和县| 三穗县| 滨海县| 宜章县| 夏邑县| 东平县| 丹寨县| 南丹县| 卢氏县| 咸宁市| 万州区| 会昌县| 苏州市| 丹东市| 铜陵市| 满城县| 米脂县| 綦江县| 乌拉特前旗| 东平县| 武安市| 从江县| 师宗县| 昌宁县| 淮南市| 西贡区| 泸水县| 长泰县| 调兵山市| 和龙市| 迭部县| 灵台县| 金塔县|