Maven倉庫加載順序的實例解析

Maven倉庫一般分為本地倉庫和遠程倉庫。遠程倉庫又分為私服、中央倉庫、中央倉庫的鏡像倉庫。

本地倉庫就是本地維護的maven倉庫,僅為本機項目提供服務。

私服一般是公司或組織在局域網級別搭建的maven倉庫,服務范圍是公司或組織局域網內的成員。

鏡像倉庫,這裡指的是maven中央倉庫的鏡像倉庫。分佈在全球各個地方,是maven中央倉庫的鏡像備份。鏡像倉庫的作用一是分攤中央倉庫的訪問壓力,第二就是可以提升我們下載依賴的速度。常用的鏡像倉庫有阿裡雲鏡像倉庫等等。

那麼在實際開發中,在配置瞭多個倉庫的情況下,他們之間的加載訪問順序是怎麼樣的呢?
本地倉庫 》 私服 》 鏡像倉庫

可以通過配置來驗證一下:

pom.xml配置倉庫:

 <repositories>
  <repository>
   <id>local-nexus</id>
   <url>http://xxx.xxx.xxx.135:8081/nexus/repository/maven-group-snapshots/</url>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>true</enabled>
   </snapshots>
  </repository>
  <repository>
   <id>ali-maven</id>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>true</enabled>
   </snapshots>
  </repository>
 </repositories>

setting.xml配置倉庫:

   <!-- 這裡配置的阿裡雲的鏡像倉庫來替代maven中央倉庫 -->
  <mirrors>
    <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>
  </mirrors>

compile一下:

...
//優先加載本地倉庫
[DEBUG] Using local repository at D:\programs\apache-maven-3.6.1-bin\notify_repo
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for D:\programs\apache-maven-3.6.1-bin\notify_repo
[INFO] Scanning for projects...
//這裡使用setting.xml配置的阿裡雲中央倉庫代替maven中央倉庫
[DEBUG] Using mirror alimaven (http://maven.aliyun.com/nexus/content/groups/public/) for central (https://repo.maven.apache.org/maven2).

...
...

//可以看到這是遠程倉庫加載的順序,先是加載pom.xml配置的135私服,然後是ali-maven,最後才是setting.xml中的alimavn,在pom.xml中,可以通過調整<repository>的順序來調整私服的加載順序
[DEBUG] Repositories (dependencies): 
[local-nexus (http://xxx.xxx.xxx.135:8081/nexus/repository/maven-group-snapshots/, default, releases+snapshots), 
ali-maven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases+snapshots), 
alimaven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases)]

...

這裡說的、以及setting.xml中的並不能代表實際中出現的所有配置,具體加載順序還是得看具體的項目和maven配置,這些都不是重點,重點是可以通過日志來知道實際是什麼情況的。

最後,如何在idea中開啟maven的debug級別日志:

到此這篇關於Maven倉庫加載順序的實例解析的文章就介紹到這瞭,更多相關Maven倉庫加載順序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: