激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 淺談Maven 項(xiàng)目中依賴的搜索順序

淺談Maven 項(xiàng)目中依賴的搜索順序

2021-06-02 11:57polly Java教程

這篇文章主要介紹了淺談Maven 項(xiàng)目中依賴的搜索順序,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

網(wǎng)上有很多關(guān)于maven項(xiàng)目中mirror、profile、repository的搜索順序的文章,說法不一。官方文檔并沒有找到相關(guān)的說明,鑒于此,我抽時(shí)間做了一個(gè)驗(yàn)證。

依賴倉(cāng)庫(kù)的配置方式

maven項(xiàng)目使用的倉(cāng)庫(kù)一共有如下幾種方式:

  1. 中央倉(cāng)庫(kù),這是默認(rèn)的倉(cāng)庫(kù)
  2. 鏡像倉(cāng)庫(kù),通過 sttings.xml 中的 settings.mirrors.mirror 配置
  3. 全局profile倉(cāng)庫(kù),通過 settings.xml 中的 settings.repositories.repository 配置
  4. 項(xiàng)目倉(cāng)庫(kù),通過 pom.xml 中的 project.repositories.repository 配置
  5. 項(xiàng)目profile倉(cāng)庫(kù),通過 pom.xml 中的 project.profiles.profile.repositories.repository 配置
  6. 本地倉(cāng)庫(kù)

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

分析依賴搜索順序

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

準(zhǔn)備測(cè)試環(huán)境

安裝jdk、maven。

使用如下命令創(chuàng)建測(cè)試項(xiàng)目:

 

復(fù)制代碼 代碼如下:
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

 

創(chuàng)建完成后,為了避免后續(xù)測(cè)試干擾,先執(zhí)行一次compile。

?
1
2
cd myweb
mvn compile

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

默認(rèn)情況

首先確保junit4.12不存在:

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

默認(rèn)情況下沒有配置任何倉(cāng)庫(kù),也就是說,既沒改 $m2_home/conf/settings.xml 也沒有添加 ~/.m2/settings.xml

執(zhí)行編譯,查看日志中拉取junit的倉(cāng)庫(kù)。

?
1
2
3
4
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)

可以看出,默認(rèn)是從 central 中央倉(cāng)庫(kù)拉取的jar.

配置鏡像倉(cāng)庫(kù) settings_mirror

創(chuàng)建 ~/.m2/setttings.xml ,內(nèi)容如下:

?
1
2
3
4
5
6
7
8
9
<settings>
 <mirrors>
  <mirror>
   <id>settings_mirror</id>
   <url>https://maven.aliyun.com/repository/public</url>
   <mirrorof>central</mirrorof>
  </mirror>
 </mirrors>
</settings>

重新測(cè)試:

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

在日志中查看下載依賴的倉(cāng)庫(kù):

 

復(fù)制代碼 代碼如下:
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

結(jié)論:settings_mirror 的優(yōu)先級(jí)高于 central

配置pom中的倉(cāng)庫(kù) pom_repositories

在 project 中增加如下配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<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的名字,所以倉(cāng)庫(kù)地址無所謂,使用相同的地址也不影響測(cè)試。

執(zhí)行測(cè)試:

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

在日志中查看下載依賴的倉(cāng)庫(kù):

 

復(fù)制代碼 代碼如下:
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)

 

從顯示的倉(cāng)庫(kù)id可以看出:

  • jar 是從 pom_repositories 中下載的。
  • pom_repositories 優(yōu)先級(jí)高于 settings_mirror

配置全局profile倉(cāng)庫(kù) settings_profile_repo

在 ~/.m2/settings.xml 中 settings 的節(jié)點(diǎn)內(nèi)增加:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>

執(zhí)行測(cè)試:

?
1
2
rm -rf ~/.m2/repository/junit/junit/4.12
mvn compile -ps_profile

在日志中查看下載依賴的倉(cāng)庫(kù):

 

復(fù)制代碼 代碼如下:
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)

 

從顯示的倉(cāng)庫(kù)id可以看出:

  • jar 是從 settings_profile_repo 中下載的。
  • settings_profile_repo 優(yōu)先級(jí)高于 settings_mirror。
  • settings_profile_repo 優(yōu)先級(jí)高于 pom_repositories 。

配置項(xiàng)目profile倉(cāng)庫(kù) pom_profile_repo

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>

執(zhí)行測(cè)試:

?
1
2
3
rm -rf ~/.m2/repository/junit/junit/4.12
mvn compile -ps_profile,p_profile
mvn compile -pp_profile,s_profile

在日志中查看下載依賴的倉(cāng)庫(kù):

 

復(fù)制代碼 代碼如下:
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)

 

從顯示的倉(cāng)庫(kù)id可以看出:

  • jar 是從 settings_profile_repo 中下載的
  • settings_profile_repo 優(yōu)先級(jí)高于 pom_profile_repo

進(jìn)一步測(cè)試:

?
1
2
rm -rf ~/.m2/repository/junit/junit/4.12
mvn compile -pp_profile

在日志中查看下載依賴的倉(cāng)庫(kù):

 

復(fù)制代碼 代碼如下:
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)

 

從顯示的倉(cāng)庫(kù)id可以看出:

  • jar 是從 settings_profile_repo 中下載的
  • pom_profile_repo 優(yōu)先級(jí)高于 pom_repositories

最后確認(rèn) local_repo 本地倉(cāng)庫(kù) ~/.m2/repository

這不算測(cè)試了,只是一個(gè)結(jié)論,可以任意測(cè)試。

只要 ~/.m2/repository 中包含依賴,無論怎么配置,都會(huì)優(yōu)先使用local本地倉(cāng)庫(kù)中的jar.

最終結(jié)論

  • settings_mirror 的優(yōu)先級(jí)高于 central
  • settings_profile_repo 優(yōu)先級(jí)高于 settings_mirror
  • settings_profile_repo 優(yōu)先級(jí)高于 pom_repositories
  • settings_profile_repo 優(yōu)先級(jí)高于 pom_profile_repo
  • pom_profile_repo 優(yōu)先級(jí)高于 pom_repositories
  • pom_repositories 優(yōu)先級(jí)高于 settings_mirror

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

local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://my.oschina.net/polly/blog/2120650

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区免费看 | 草逼一区 | 欧美黑人一级 | 久久久久久麻豆 | 黄色片免费在线 | 欧美日韩国产中文字幕 | 素人视频免费观看 | 黄色毛片一级 | 欧美毛片免费观看 | 久久精品亚洲成在人线av网址 | 性片网站| 国内精品久久久久久2021浪潮 | 中文字幕在线观看免费 | 成人免费毛片一 | 日本人乱人乱亲乱色视频观看 | 日本一区视频在线观看 | 神马久久精品综合 | 久草成人在线观看 | 中文字幕精品在线播放 | 日本人乱人乱亲乱色视频观看 | 久久久久国产成人免费精品免费 | 国产精品亚洲三区 | 亚洲成人精品视频 | 日韩精品一区二区久久 | 欧产日产国产精品v | 日本xxxx色视频在线观看免费, | 欧美一级黄 | 日韩视频www| 久久99国产精品久久99 | 成人免费网站在线观看 | 成人午夜视频在线观看免费 | 国产精品一二三区在线观看 | 久久久久久久久国产 | 久久色网站 | 性片网站 | 爱草在线 | 亚洲精品av在线 | 亚洲卡通动漫在线观看 | 欧美一区欧美二区 | 美女在线视频一区二区 | 国产亚洲小视频 |