日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.1 maven配置多镜像地址

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.1 maven配置多镜像地址 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:

  自己在平時寫項目用的是阿里的鏡像地址,而在開發公司的項目是用的是公司提供的鏡像地址,這就導致了每次使用的時候

都需要來回的修改maven的settings.xml文件,這樣很容易出錯,而且還浪費時間;

需求:希望能夠不改動配置文件的情況下,動態切換mirror配置;

分析:

  在maven的配置文件setting.xml大里面有個mirrors節點,用來配置鏡像URL。mirrors可以配置多個mirror,每個mirror有id,name,url,mirrorOf屬性,

id是唯一標識一個mirror,name節點名,url是官方的庫地址,mirrorOf代表了一個鏡像的替代位置,例如central就表示代替官方的中央庫。

?

雖然mirrors可以配置多個子節點,但是它只會使用其中的一個節點,即默認情況下配置多個mirror的情況下,只有第一個生效,只有當前一個mirror

無法連接的時候,才會去找后一個;而我們想要的效果是:當a.jar在第一個mirror中不存在的時候,maven會去第二個mirror中查詢下載,但是maven不會這樣做!)。

?

那么maven是使用哪個mirror節點的呢?

默認:mirror不是按settings.xml中寫的那樣的順序來查詢的,即所謂的第一個并不一定是最上面的那個。

   當有id為B,A,C的順序的mirror在mirrors節點中,maven會根據字母排序來指定第一個,所以不管怎么排列,
? ? ? ? ? ?一定會先找到A這個mirror來進行查找,當A無法連接,出現意外的情況下,才會去B查詢。

?

注意:

?  配置多個mirror時,mirrorOf不能配置" * "," * " 的意思就是(根據mirrorOf和repository的id)匹配所有的倉庫(repository),

這樣就是說如果你需要某個jar,他會從鏡像地址去下載這個jar。不管你配置了多少個庫,即使這些庫的地址不一樣,仍然會從鏡像地址訪問。

解決辦法:

  settings.xml 中可以使用變量,可以嘗試使用變量解決:

<!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|<mirror> --><!-- 唯一標識一個mirror --><id>mirrorId</id><!-- 代表這個鏡像的替代位置,例如central就表示替代官方的中央倉庫。我們可以將這個地方設置為變量,然后通過手動指定變量地方式動態切換mirror --><!-- mirrorOf指定這個鏡像是針對哪個repository的,配置成*就表示要代理所有repository的請求 --><mirrorOf>repositoryId</mirrorOf><!-- 名字(個人感覺這個name作用主要是給自己識別用,因為id已經在當前xml中唯一指定了一個mirror) --><name>Human Readable Name for this Mirror.</name><!-- 官方倉庫庫的地址 --><url>http://my.repository.com/repo/path</url></mirror>

實例:

<mirrors><mirror><id>aliyun</id><url>https://maven.aliyun.com/repository/public</url><mirrorOf>${aliyun}</mirrorOf></mirror><mirror><id>netease</id><url>http://mirrors.163.com/maven/repository/maven-public/</url><mirrorOf>${netease}</mirrorOf></mirror><mirror><id>default</id><url>http://ip/nexus/repository/maven-public/</url><mirrorOf>central</mirrorOf></mirror> </mirrors>

切換命令:

配置多個mirror的情況下,默認只有第一個生效。因此我們可以把最后一個作為默認值,前面配置的使用環境變量動態切換。
默認執行: mvn help:effective-settings可以看到使用的是最后一個
切換阿里鏡像執行mvn help:effective-settings -Daliyun=central即可
同理,切換網易mvn help:effective-settings -Dnetease=central

?

參考:Maven 的 settings.xml 配置中的mirror節點

  ? ? maven的setting配置文件中mirror和repository的區別

   Maven settings配置中的mirrorOf

   maven動態切換mirror,無需修改settings.xml 

  ? ? maven 中配置多個mirror的問題

?

轉載于:https://www.cnblogs.com/shiyun32/p/10703496.html

總結

以上是生活随笔為你收集整理的2.1 maven配置多镜像地址的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。