亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

淺談Maven 項目中依賴的搜索順序

2024-07-14 08:42:25
字體:
來源:轉載
供稿:網友

網上有很多關于maven項目中mirror、profile、repository的搜索順序的文章,說法不一。官方文檔并沒有找到相關的說明,鑒于此,我抽時間做了一個驗證。

依賴倉庫的配置方式

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. 本地倉庫

如果所有配置都存在,依賴的搜索順序就會變得異常復雜。

分析依賴搜索順序

先從最簡單開始,慢慢增加配置,查看有什么變化。

準備測試環境

安裝jdk、maven。

使用如下命令創建測試項目:

 

復制代碼代碼如下:
yes | mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp  -DinteractiveMode=true -DgroupId=com.pollyduan -DartifactId=myweb -Dversion=1.0 -Dpackage=com.pollyduan

 

創建完成后,為了避免后續測試干擾,先執行一次compile。

cd mywebmvn compile

最后,修改 pom.xml 文件,將 junit版本號改為 4.12 。我們要使用這個jar來測試依賴的搜索順序。

默認情況

首先確保junit4.12不存在:

rm -rf ~/.m2/repository/junit/junit/4.12

默認情況下沒有配置任何倉庫,也就是說,既沒改 $M2_HOME/conf/settings.xml 也沒有添加 ~/.m2/settings.xml

執行編譯,查看日志中拉取junit的倉庫。

mvn compile...Downloaded from central: https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom (24 kB at 11 kB/s)

可以看出,默認是從 central 中央倉庫拉取的jar.

配置鏡像倉庫 settings_mirror

創建 ~/.m2/setttings.xml ,內容如下:

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

重新測試:

rm -rf ~/.m2/repository/junit/junit/4.12mvn compile

在日志中查看下載依賴的倉庫:

 

復制代碼代碼如下:
Downloaded from settings_mirror: https://maven.aliyun.com/repository/public/junit/junit/4.12/junit-4.12.pom (24 kB at 35 kB/s)

 

可以看出,是從 settings_mirror 中下載的jar

結論:settings_mirror 的優先級高于 central

配置pom中的倉庫 pom_repositories

在 project 中增加如下配置:

<repositories> <repository>  <id>pom_repositories</id>  <name>local</name>  <url>http://10.18.29.128/nexus/content/groups/public/</url>  <releases>   <enabled>true</enabled>  </releases>  <snapshots>   <enabled>true</enabled>  </snapshots> </repository></repositories>

由于我們改變了id的名字,所以倉庫地址無所謂,使用相同的地址也不影響測試。

執行測試:

rm -rf ~/.m2/repository/junit/junit/4.12mvn compile

在日志中查看下載依賴的倉庫:

 

復制代碼代碼如下:
Downloaded from pom_repositories: http://10.18.29.128/nexus/content/groups/public/junit/junit/4.12/junit-4.12.pom (24 kB at 95 kB/s)

 

從顯示的倉庫id可以看出:

  • jar 是從 pom_repositories 中下載的。
  • pom_repositories 優先級高于 settings_mirror

配置全局profile倉庫 settings_profile_repo

在 ~/.m2/settings.xml 中 settings 的節點內增加:

<profiles> <profile> <id>s_profile</id> <repositories>  <repository>   <id>settings_profile_repo</id>   <name>netease</name>   <url>http://mirrors.163.com/maven/repository/maven-public/</url>   <releases>    <enabled>true</enabled>   </releases>   <snapshots>    <enabled>true</enabled>   </snapshots>  </repository> </repositories> </profile></profiles>

執行測試:

rm -rf ~/.m2/repository/junit/junit/4.12mvn compile -Ps_profile

在日志中查看下載依賴的倉庫:

 

復制代碼代碼如下:
Downloaded from settings_profile_repo: http://mirrors.163.com/maven/repository/maven-public/junit/junit/4.12/junit-4.12.pom (24 kB at 63 kB/s)

 

從顯示的倉庫id可以看出:

  • jar 是從 settings_profile_repo 中下載的。
  • settings_profile_repo 優先級高于 settings_mirror。
  • settings_profile_repo 優先級高于 pom_repositories 。

配置項目profile倉庫 pom_profile_repo

<profiles> <profile>  <id>p_profile</id>  <repositories>   <repository>    <id>pom_profile_repo</id>    <name>local</name>    <url>http://10.18.29.128/nexus/content/groups/public/</url>    <releases>     <enabled>true</enabled>    </releases>    <snapshots>     <enabled>true</enabled>    </snapshots>   </repository>  </repositories> </profile></profiles>

執行測試:

rm -rf ~/.m2/repository/junit/junit/4.12mvn compile -Ps_profile,p_profilemvn compile -Pp_profile,s_profile

在日志中查看下載依賴的倉庫:

 

復制代碼代碼如下:
Downloaded from settings_profile_repo: http://mirrors.163.com/maven/repository/maven-public/junit/junit/4.12/junit-4.12.pom (24 kB at 68 kB/s)

 

從顯示的倉庫id可以看出:

  • jar 是從 settings_profile_repo 中下載的
  • settings_profile_repo 優先級高于 pom_profile_repo

進一步測試:

rm -rf ~/.m2/repository/junit/junit/4.12mvn compile -Pp_profile

在日志中查看下載依賴的倉庫:

 

復制代碼代碼如下:
Downloaded from pom_profile_repo: http://10.18.29.128/nexus/content/groups/public/junit/junit/4.12/junit-4.12.pom (24 kB at 106 kB/s)

 

從顯示的倉庫id可以看出:

  • jar 是從 settings_profile_repo 中下載的
  • pom_profile_repo 優先級高于 pom_repositories

最后確認 local_repo 本地倉庫 ~/.m2/repository

這不算測試了,只是一個結論,可以任意測試。

只要 ~/.m2/repository 中包含依賴,無論怎么配置,都會優先使用local本地倉庫中的jar.

最終結論

  • settings_mirror 的優先級高于 central
  • settings_profile_repo 優先級高于 settings_mirror
  • settings_profile_repo 優先級高于 pom_repositories
  • settings_profile_repo 優先級高于 pom_profile_repo
  • pom_profile_repo 優先級高于 pom_repositories
  • pom_repositories 優先級高于 settings_mirror

通過上面的比較得出完整的搜索鏈:

local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99久久99精品中文字幕| 精品福利樱桃av导航| 欧美在线激情视频| 欧美日韩精品在线| 亚洲国产91精品在线观看| 精品日韩美女的视频高清| 日韩美女视频中文字幕| 亚洲第一免费播放区| 欧美大肥婆大肥bbbbb| 亚洲大尺度美女在线| 国产精品久久久久7777婷婷| 久久久视频在线| 国产精品美女在线观看| 欧美激情欧美狂野欧美精品| 亚洲欧美在线x视频| 国产999在线观看| 92国产精品久久久久首页| 亚洲国产一区二区三区在线观看| 日韩电影免费在线观看| 国产成人a亚洲精品| 亚洲国产精品推荐| 上原亚衣av一区二区三区| 日韩精品福利网站| 亚州欧美日韩中文视频| 海角国产乱辈乱精品视频| 久久久www成人免费精品张筱雨| 亚洲国内精品在线| 国产精品久久一| 国产精品自拍小视频| 日韩电影中文字幕在线| 亚洲精品欧美日韩专区| 亚洲网站在线观看| 中文字幕日韩欧美| 中文字幕亚洲欧美日韩高清| 国产一区av在线| 国产日韩欧美视频| 91视频免费在线| 在线精品国产欧美| 欧美一区深夜视频| 午夜精品一区二区三区视频免费看| 亚洲黄色www| 久久中国妇女中文字幕| 欧美激情欧美激情在线五月| 亚洲性生活视频在线观看| 精品一区二区亚洲| 精品国产一区二区三区久久| 91人人爽人人爽人人精88v| 欧美一级视频一区二区| 欧美日韩国产色| 7777精品视频| 精品亚洲一区二区三区四区五区| 久久国产加勒比精品无码| 日韩欧美高清视频| 日韩av在线网页| 欧美黑人国产人伦爽爽爽| 欧美一区二区大胆人体摄影专业网站| 亚洲人成网站777色婷婷| 欧美性猛交xxxxx免费看| 久久久在线观看| 亚洲欧洲一区二区三区在线观看| 欧美高清性猛交| 成人h视频在线| 欧美精品videos另类日本| 日韩美女视频在线观看| 最近中文字幕2019免费| 亚洲一区免费网站| 日韩视频―中文字幕| 亚洲国产成人久久综合一区| 欧美不卡视频一区发布| 精品国产31久久久久久| 欧美极度另类性三渗透| 中文国产成人精品| 久久久成人的性感天堂| 色偷偷9999www| 国产精品久久久久久久久久久久| 日韩大胆人体377p| 国产97在线播放| 精品小视频在线| 91中文精品字幕在线视频| 欧美区二区三区| 伊人伊成久久人综合网小说| 日韩精品视频中文在线观看| 亚洲精品久久久久久久久久久久久| 亚洲欧洲黄色网| 中文字幕欧美精品日韩中文字幕| 国产美女直播视频一区| 最近中文字幕mv在线一区二区三区四区| 黄网站色欧美视频| 国产精品久久久久久超碰| 国产亚洲精品va在线观看| 日本韩国欧美精品大片卡二| 九九热r在线视频精品| 亚洲色图第三页| 欧美久久精品一级黑人c片| 69久久夜色精品国产7777| 91精品国产精品| 91日韩在线播放| 久久久国产精彩视频美女艺术照福利| 韩国国内大量揄拍精品视频| 视频一区视频二区国产精品| 日韩中文字幕不卡视频| 亚洲免费成人av电影| 精品国产一区二区三区久久狼黑人| 亚洲欧美制服第一页| 日本久久久久久久久久久| 色综合视频网站| 欧美另类老女人| 久久国产精品久久久久久久久久| 精品亚洲国产成av人片传媒| 亚洲高清福利视频| 色婷婷综合久久久久| 欧美亚洲国产视频小说| 国产精品av免费在线观看| 日本一区二区在线播放| 日本精品免费一区二区三区| 热99久久精品| 视频在线观看一区二区| 日本久久精品视频| 国产69精品久久久久9999| 亚洲999一在线观看www| 中文字幕亚洲一区在线观看| 久久国产精品久久久久久| 欧洲午夜精品久久久| 色婷婷综合久久久久| 宅男66日本亚洲欧美视频| 最近2019中文字幕mv免费看| 国产一区二区久久精品| 97精品伊人久久久大香线蕉| 国产一区二区精品丝袜| 亚洲国产欧美一区| 91精品国产综合久久久久久久久| 26uuu亚洲国产精品| www.日韩系列| 亚洲一区二区三区久久| 欧美一级大片视频| 精品国模在线视频| 亚洲一区二区三区香蕉| 久久久极品av| 久久成人这里只有精品| 日韩av在线免费播放| 日韩中文视频免费在线观看| 亚洲色图17p| 欧美三级欧美成人高清www| 在线观看国产精品淫| 91欧美精品成人综合在线观看| 欧洲美女免费图片一区| 色综合91久久精品中文字幕| 亚洲一级免费视频| 国产精品视频导航| 中文字幕日韩免费视频| 亚洲国产欧美一区| 永久555www成人免费| 欧美国产日韩在线| 1769国产精品| 国产精品视频色| 国产欧美日韩精品在线观看| 中文字幕成人精品久久不卡| 色偷偷噜噜噜亚洲男人| 久久人91精品久久久久久不卡| 亚洲天堂色网站| 成人免费看片视频| 精品国产一区二区三区在线观看| 欧美日韩亚洲91| 国产精品视频专区|