maven repository倉(cāng)庫(kù)遠(yuǎn)程請(qǐng)求依賴(lài)流程

  1. pom文件定義了遠(yuǎn)程倉(cāng)庫(kù)位置
<repositories>
    <repository>
      <id>maven-net-cn</id>
      <name>Maven China Mirror</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>maven-net-cn</id>
      <name>Maven China Mirror</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>    
    </pluginRepository>
  </pluginRepositories>

則maven會(huì)去pom中定義的url拉去依賴(lài),正常的依賴(lài)去repository中拉取,插件依賴(lài)去pluginRepository拉取,如果沒(méi)有定義pluginRepository,則插件依賴(lài)去repository中拉取。這兩種,去對(duì)應(yīng)倉(cāng)庫(kù)找不到的情況下,會(huì)去maven的中心倉(cāng)庫(kù)找
pom中的定義只針對(duì)該項(xiàng)目。

  1. settings.xml文件定義了遠(yuǎn)程倉(cāng)庫(kù)位置
<profiles>
    <profile>
      <id>test</id>
      <repositories>
      <repositories />
      <pluginRepositories>
      <pluginRepositories />
    </profile>
</profiles>

則maven會(huì)去對(duì)應(yīng)repositories的位置拉取依賴(lài),如果同時(shí)配置了settings.xml和pom.xml,則先去pom找,找不到再去settings.xml配置的url找?,再找不到去maven的中心倉(cāng)庫(kù)找

settings.xml定義鏡像

<mirrors>
    <mirror>
      <id>maven-net-cn</id>
      <name>Maven China Mirror</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <mirrorOf>maven-net-cn</mirrorOf>
    </mirror>
  </mirrors>
<mirrorOf>maven-net-cn</mirrorOf> 

會(huì)過(guò)濾上面pom或settings配置id為maven-net-cn的遠(yuǎn)程倉(cāng)庫(kù), maven不訪問(wèn) id為maven-net-cn配置的倉(cāng)庫(kù),轉(zhuǎn)為訪問(wèn)mirror中配置的url,找不到再去maven中心倉(cāng)庫(kù)找?
如果

<mirrorOf>central</mirrorOf> 

過(guò)濾中心倉(cāng)庫(kù)

<mirrorOf>*</mirrorOf> 

過(guò)濾所有倉(cāng)庫(kù)

如果有多個(gè)mirror配置

<mirrors>
    <mirror>
      <id>maven-net-cn1</id>
      <name>Maven China Mirror1</name>
      <url>http://maven.net.cn/content/groups/public2/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
    <mirror>
      <id>maven-net-c2</id>
      <name>Maven China Mirror2</name>
      <url>http://maven.net.cn/content/groups/public2/</url>
      <mirrorOf>maven-net-cn</mirrorOf>
    </mirror>
  </mirrors>

則按順序匹配第一個(gè),匹配到后但是找不到依賴(lài),不再往下匹配,類(lèi)似switch case
如上,所有的倉(cāng)庫(kù)訪問(wèn)都會(huì)被<mirrorOf>*</mirrorOf>過(guò)濾,<mirrorOf>maven-net-cn</mirrorOf>實(shí)際上不起作用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容