maven訪問倉庫的順序(六)


前言

一、順序

maven項目使用的倉庫一共有如下幾種方式:

  1. 中央倉庫,這是默認的倉庫
  2. 鏡像倉庫,通過 sttings.xml 中的 settings.mirrors.mirror 配置
  3. 全局profile倉庫,通過 settings.xml 中的 settings.repositories.repository 配置
  4. 項目倉庫,通過 pom.xml 中的 project.repositories.repository 配置
  5. 項目profile倉庫,通過 pom.xml 中的 project.profiles.profile.repositories.repository 配置
  6. 本地倉庫

搜索順序如下:

local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

================

查詢順序

        現在maven的查詢順序為:

        首先在本地資源庫中查找依賴,若不存在,則進入下一步,否則,退出;

        然后在 遠程倉庫(私服) 中查找依賴,若不存在,則進入下一步,否則,退出;

        最后在 中央倉庫 中查找依賴,若不存在,則提示錯誤信息,退出。

================

三個倉庫:
本地倉庫:本地的一個文件夾,用來存放所有的jar包,由自己維護;
遠程倉庫(或私服):由公司或單位創建的一個倉庫,由公司維護;
中央倉庫:互聯網上的倉庫,由Maven團隊維護;

 =========

maven的倉庫只有兩大類:

1.本地倉庫

2.遠程倉庫,在遠程倉庫中又分成了3種:

2.1 中央倉庫

2.2 私服

2.3 其它公共庫

參看鏈接:https://www.cnblogs.com/YuyuanNo1/p/12938161.html

二、MAVEN 倉庫加載順序

2.1如果未配置有 mirrorOf * 的鏡像倉庫按照下面順序獲取jar

1 、查找本地倉庫

2 、查找全局repository倉庫配置並且按配置文件編輯倒序查找

【如果配置多個全局私服倉庫,就算其中一個找到jar也會繼續執行其他全局私服倉庫下載操作,是否存在覆蓋關系無法驗證;如果全局有配置的情況下,未找到jar直接拋錯,不會去項目配置的私有倉庫下載資源】

3 、查找項目的repository倉庫配置

【如果全局倉庫找到jar,還會繼續下載項目配置的私有倉庫資源,是否存在覆蓋關系無法驗證;如果全局倉庫無法找到jar,直接拋錯,不會繼續下載項目私服倉庫配置】

4 、查找中央倉庫,如果沒有配置mirror 就默認中央倉庫地址 https://repo.maven.apache.org/maven2

5 、查找中央倉庫,如果配置了mirror並且配置多個mirrorOf 是central 只會獲取第一個配置進行下載jar

2.2如果配置有 mirrorOf * 的鏡像倉庫

<mirrors>
         <mirror>
            <id>xx-repository</id>
            <name>xxx</name>
            <mirrorOf>*</mirrorOf>
            <url>xxxxx</url>
        </mirror>
  </mirrors>

則忽略上述規則,只從此倉庫獲取jar包。

1.<mirrorOf>*</mirrorOf>匹配所有遠程倉庫。

2.<mirrorOf>external:*</mirrorOf>匹配所有遠程倉庫,使用localhost的除外,使用file://協議的除外。也就是說,匹配所有不在本機上的遠程倉庫。

3.<mirrorOf>repo1,repo2</mirrorOf>匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫。

4.<mirrorOf>*,!repo1</miiroOf>匹配所有遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。

2.3個人總結

總體來說,根據實驗,得出以下個人想法:

1、本地倉庫永遠是第一個被查找的對象。

2、本地倉庫找不到了,他會判斷maven是否配置了<mirrorOf>*</mirrorOf>的鏡像,如果是則從這里下載,不是則往下走。

3、判斷是否存在私服配置,不管是maven settings.xml全局配置還是項目的pom私有配置,如果有則優先全局而后是項目私有,都會下載一遍jar【更正,取決於私服相關配置和啟用條件】,是否存在覆蓋關系無法驗證。若都是啟用狀態則全局配置按配置文件倒序排優先級,找不到挨個往上找,但如果全局下不到jar就直接拋錯了,不會繼續去項目pom配置的私服下載。

4、查找中央倉庫是否配置鏡像,有走鏡像,無走默認鏡像。

參看鏈接:https://blog.csdn.net/kkillala/article/details/105809519


免責聲明!

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



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