在項(xiàng)目中使用Maven管理JAR包依賴(lài),往往會(huì)出現(xiàn)以下?tīng)顩r:
1、國(guó)內(nèi)訪(fǎng)問(wèn)maven默認(rèn)遠(yuǎn)程中央鏡像特別慢;使用阿里的鏡像替代遠(yuǎn)程中央鏡像;
2、阿里云鏡像中缺少部分JAR包;同時(shí)使用私有倉(cāng)庫(kù)和公有倉(cāng)庫(kù);
Maven的中央倉(cāng)庫(kù)很強(qiáng)大,絕大多數(shù)的JAR包都收錄了,但也有未被收錄的。遇到未收錄的JAR包時(shí),就會(huì)編譯報(bào)錯(cuò)。
針對(duì)以上情況,我們就需要讓Maven支持多倉(cāng)庫(kù)配置。

單獨(dú)倉(cāng)庫(kù)配置
當(dāng)只配置一個(gè)倉(cāng)庫(kù)時(shí),操作比較簡(jiǎn)單,直接在Maven的settings.xml文件中進(jìn)行全局配置即可,以阿里云的鏡像為例:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
只用新增一個(gè)mirror配置即可。要做到單一倉(cāng)庫(kù),設(shè)置mirrorOf到*。
mirrorOf中配置的星號(hào),表示匹配所有的artifacts,也就是everything使用這里的代理地址。上面的mirrorOf配置了具體的名字,指的是repository的名字。mirrorOf 設(shè)置為central,則會(huì)覆蓋maven里默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù)。
鏡像配置說(shuō)明:
1、id: 鏡像的唯一標(biāo)識(shí);
2、name: 名稱(chēng)描述;
3、url: 地址;
4、mirrorOf: 指定鏡像規(guī)則,什么情況下從鏡像倉(cāng)庫(kù)拉取。其中,
*: 匹配所有,所有內(nèi)容都從鏡像拉取;
external:*: 除了本地緩存的所有從鏡像倉(cāng)庫(kù)拉取;
repo,repo1: repo或者repo1,這里的repo指的倉(cāng)庫(kù)ID;
*,!repo1: 除了repo1的所有倉(cāng)庫(kù);

專(zhuān)欄
Spring Cloud Alibaba微服務(wù)實(shí)戰(zhàn)
作者:軟件架構(gòu)
29.8幣
116人已購(gòu)
查看
多倉(cāng)庫(kù)配置方式一:全局多倉(cāng)庫(kù)設(shè)置
全局多倉(cāng)庫(kù)設(shè)置,是通過(guò)修改maven的setting文件實(shí)現(xiàn)的。
設(shè)置思路:在setting文件中添加多個(gè)profile(也可以在一個(gè)profile中包含很多個(gè)倉(cāng)庫(kù)),并激活。即使是只有一個(gè)可用的profile,也需要激活。
修改maven的setting文件,設(shè)置兩個(gè)倉(cāng)庫(kù)(以此類(lèi)推,可以添加多個(gè)):
<profiles>
<profile>
<!-- id必須唯一 -->
<id>myRepository1</id>
<repositories>
<repository>
<!-- id必須唯一 -->
<id>myRepository1_1</id>
<!-- 倉(cāng)庫(kù)的url地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<!-- id必須唯一 -->
<id>myRepository2</id>
<repositories>
<repository>
<!-- id必須唯一 -->
<id>myRepository2_1</id>
<!-- 倉(cāng)庫(kù)的url地址 -->
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
通過(guò)配置activeProfiles子節(jié)點(diǎn)激活:
<activeProfiles>
<!-- 激活myRepository1 -->
<activeProfile>myRepository1</activeProfile>
<!-- 激活myRepository2 -->
<activeProfile>myRepository2</activeProfile>
</activeProfiles>
此時(shí)如果是在Idea中使用了本地的Maven配置,那么在項(xiàng)目的Maven管理中會(huì)看到類(lèi)似如下圖中的profile選項(xiàng)。


專(zhuān)欄
SkyWalking分布式鏈路追蹤和監(jiān)控
作者:軟件架構(gòu)
19.8幣
103人已購(gòu)
查看
多倉(cāng)庫(kù)配置方式二:在項(xiàng)目中添加多個(gè)倉(cāng)庫(kù)
在項(xiàng)目中添加多個(gè)倉(cāng)庫(kù),是通過(guò)修改項(xiàng)目中的pom文件實(shí)現(xiàn)的。
思路:在項(xiàng)目中pom文件的repositories節(jié)點(diǎn)(如果沒(méi)有手動(dòng)添加)下添加多個(gè)repository節(jié)點(diǎn),每個(gè)repository節(jié)點(diǎn)是一個(gè)倉(cāng)庫(kù)。
修改項(xiàng)目中pom文件,設(shè)置兩個(gè)倉(cāng)庫(kù)(以此類(lèi)推,可以添加多個(gè)):
<repositories>
<repository>
<!-- id必須唯一 -->
<id>jboss-repository</id>
<!-- 見(jiàn)名知意即可 -->
<name>jboss repository</name>
<!-- 倉(cāng)庫(kù)的url地址 -->
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
<repository>
<!-- id必須唯一 -->
<id>aliyun-repository</id>
<!-- 見(jiàn)名知意即可 -->
<name>aliyun repository</name>
<!-- 倉(cāng)庫(kù)的url地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
這里的id就是mirrorOf要使用的ID。

注:以上兩種方式的id值均不可以為“central”,因?yàn)閏entral表示該配置為中央庫(kù)的鏡像。