在項目中使用Maven管理JAR包依賴,往往會出現以下狀況:
1、國內訪問maven默認遠程中央鏡像特別慢;使用阿里的鏡像替代遠程中央鏡像;
2、阿里云鏡像中缺少部分JAR包;同時使用私有倉庫和公有倉庫;
Maven的中央倉庫很強大,絕大多數的JAR包都收錄了,但也有未被收錄的。遇到未收錄的JAR包時,就會編譯報錯。
針對以上情況,我們就需要讓Maven支持多倉庫配置。
單獨倉庫配置
當只配置一個倉庫時,操作比較簡單,直接在Maven的settings.xml文件中進行全局配置即可,以阿里云的鏡像為例:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
只用新增一個mirror配置即可。要做到單一倉庫,設置mirrorOf到*。
mirrorOf中配置的星號,表示匹配所有的artifacts,也就是everything使用這里的代理地址。上面的mirrorOf配置了具體的名字,指的是repository的名字。mirrorOf 設置為central,則會覆蓋maven里默認的遠程倉庫。
鏡像配置說明:
1、id: 鏡像的唯一標識;
2、name: 名稱描述;
3、url: 地址;
4、mirrorOf: 指定鏡像規則,什么情況下從鏡像倉庫拉取。其中,
*: 匹配所有,所有內容都從鏡像拉取;
external:*: 除了本地緩存的所有從鏡像倉庫拉取;
repo,repo1: repo或者repo1,這里的repo指的倉庫ID;
*,!repo1: 除了repo1的所有倉庫;
專欄
Spring Cloud Alibaba微服務實戰
作者:軟件架構
29.8幣
116人已購
查看
多倉庫配置方式一:全局多倉庫設置
全局多倉庫設置,是通過修改maven的setting文件實現的。
設置思路:在setting文件中添加多個profile(也可以在一個profile中包含很多個倉庫),并激活。即使是只有一個可用的profile,也需要激活。
修改maven的setting文件,設置兩個倉庫(以此類推,可以添加多個):
<profiles>
<profile>
<!-- id必須唯一 -->
<id>myRepository1</id>
<repositories>
<repository>
<!-- id必須唯一 -->
<id>myRepository1_1</id>
<!-- 倉庫的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>
<!-- 倉庫的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>
通過配置activeProfiles子節點激活:
<activeProfiles>
<!-- 激活myRepository1 -->
<activeProfile>myRepository1</activeProfile>
<!-- 激活myRepository2 -->
<activeProfile>myRepository2</activeProfile>
</activeProfiles>
此時如果是在Idea中使用了本地的Maven配置,那么在項目的Maven管理中會看到類似如下圖中的profile選項。
專欄
SkyWalking分布式鏈路追蹤和監控
作者:軟件架構
19.8幣
103人已購
查看
多倉庫配置方式二:在項目中添加多個倉庫
在項目中添加多個倉庫,是通過修改項目中的pom文件實現的。
思路:在項目中pom文件的repositories節點(如果沒有手動添加)下添加多個repository節點,每個repository節點是一個倉庫。
修改項目中pom文件,設置兩個倉庫(以此類推,可以添加多個):
<repositories>
<repository>
<!-- id必須唯一 -->
<id>jboss-repository</id>
<!-- 見名知意即可 -->
<name>jboss repository</name>
<!-- 倉庫的url地址 -->
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
<repository>
<!-- id必須唯一 -->
<id>aliyun-repository</id>
<!-- 見名知意即可 -->
<name>aliyun repository</name>
<!-- 倉庫的url地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
這里的id就是mirrorOf要使用的ID。
注:以上兩種方式的id值均不可以為“central”,因為central表示該配置為中央庫的鏡像。