Maven配置單倉(cāng)庫(kù)與多倉(cāng)庫(kù)的實(shí)現(xiàn)(Nexus)
單倉(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的名字。
鏡像配置說(shuō)明:
1、id: 鏡像的唯一標(biāo)識(shí);
2、name: 名稱描述;
3、url: 地址;
4、mirrorOf: 指定鏡像規(guī)則,什么情況下從鏡像倉(cāng)庫(kù)拉取。其中, *: 匹配所有,所有內(nèi)容都從鏡像拉?。?/p>
external:*: 除了本地緩存的所有從鏡像倉(cāng)庫(kù)拉?。?/p>
repo,repo1: repo或者repo1,這里的repo指的倉(cāng)庫(kù)ID;
*,!repo1: 除了repo1的所有倉(cāng)庫(kù);
多倉(cāng)庫(kù)
先看看我的settings配置文件
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\idea\Maven\apache-maven-3.8.4\maven-repo</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<!-- 私服信息 -->
<servers>
<server>
<id>kd-nexus</id>
<username>賬號(hào)</username>
<password>密碼</password>
</server>
<server>
<id>nexus</id>
<username>賬號(hào)</username>
<password>密碼</password>
</server>
</servers>
<!-- 倉(cāng)庫(kù)信息 -->
<mirrors>
<mirror>
<!-- 與上面的id對(duì)應(yīng) -->
<id>kd-nexus</id>
<mirrorOf>*</mirrorOf>
<name>kd-nexus maven</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
<mirror>
<!-- 與上面的id對(duì)應(yīng) -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>nexus maven</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
<!-- 項(xiàng)目配置文件信息 -->
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<!-- 啟動(dòng)那個(gè)配置 -->
<activeProfiles>
<activeProfile>jdk-1.8</activeProfile>
</activeProfiles>
</settings>
剛開(kāi)始我以為這樣就可以了,如果在kd-nexus找不到j(luò)ar包,會(huì)自動(dòng)去nexus里面找jar包,可現(xiàn)實(shí)是maven只會(huì)在kd-nexus中找,找不到就報(bào)錯(cuò),根本不會(huì)在之后的倉(cāng)庫(kù)中取尋找 因?yàn)椋?/p>
雖然mirrors可以配置多個(gè)子節(jié)點(diǎn),但是它只會(huì)使用其中的一個(gè)節(jié)點(diǎn),即**默認(rèn)情況下配置多個(gè)mirror的情況下,只有第一個(gè)生效,**只有當(dāng)前一個(gè)mirror
無(wú)法連接的時(shí)候,才會(huì)去找后一個(gè);而我們想要的效果是:當(dāng)a.jar在第一個(gè)mirror中不存在的時(shí)候,maven會(huì)去第二個(gè)mirror中查詢下載,但是maven不會(huì)這樣做!
多倉(cāng)庫(kù)配置
那么針對(duì)多倉(cāng)庫(kù)的配置是否再多配置幾個(gè)mirror就可以了?如此配置并不會(huì)生效。
正確的操作是在profiles節(jié)點(diǎn)下配置多個(gè)profile,而且配置之后要激活。
<profiles>
<profile>
<id>boundlessgeo</id>
<repositories>
<repository>
<id>boundlessgeo</id>
<url>https://repo.boundlessgeo.com/main/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<id>aliyun</id>
<repositories>
<repository>
<id>aliyun</id>
<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>maven-central</id>
<repositories>
<repository>
<id>maven-central</id>
<url>http://central.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profiles>
通過(guò)配置activeProfiles子節(jié)點(diǎn)激活:
<activeProfiles>
<activeProfile>boundlessgeo</activeProfile>
<activeProfile>aliyun</activeProfile>
<activeProfile>maven-central</activeProfile>
</activeProfiles>

打包時(shí),勾選所使用的profile即可。如果使用Maven命令打包執(zhí)行命令格式如下:
mvn -Paliyun ...
1.如果aliyun倉(cāng)庫(kù)的id設(shè)置為central,則會(huì)覆蓋maven里默認(rèn)的遠(yuǎn)程倉(cāng)庫(kù)。
2.aliyun的倉(cāng)庫(kù)也可以不用配置,直接在mirrors標(biāo)簽內(nèi)配置一個(gè)鏡像倉(cāng)庫(kù),mirrors鏡像倉(cāng)庫(kù)mirrorOf的值設(shè)置為central,則也可以實(shí)現(xiàn)覆蓋默認(rèn)的倉(cāng)庫(kù)。
好了你既然看到這里了,那么上訴可能基本沒(méi)效果,問(wèn)就是我導(dǎo)包也沒(méi)成功,現(xiàn)提供兩個(gè)解決方案
前提
idea每次修改完settings之后,需要重新點(diǎn)擊一下,更新一下文件配置

一、挨個(gè)導(dǎo)包
首先kd-nexus先導(dǎo)一下包
<mirrors>
<mirror>
<id>kd-nexus</id>
<mirrorOf>*</mirrorOf>
<name>kd-nexus maven</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>nexus maven</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
</mirrors>
之后修改maven配置,導(dǎo)一下nexus的包
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>nexus maven</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
<mirror>
<id>kd-nexus</id>
<mirrorOf>*</mirrorOf>
<name>kd-nexus maven</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
</mirrors>
二、手動(dòng)導(dǎo)包(解決一切導(dǎo)包問(wèn)題,就是過(guò)程很麻煩)

本地maven倉(cāng)庫(kù):如果連這個(gè)都不清楚,看nexus完全沒(méi)意義
就是localRepository標(biāo)簽中的文件地址 <localRepository>D:\idea\Maven\apache-maven-3.8.4\maven-repo</localRepository>
不知道Nexus怎么搭建的家人們,可以看一下這篇文章:使用Nexus搭建Maven私服教程(附:nexus上傳、下載教程)
到此這篇關(guān)于Maven配置單倉(cāng)庫(kù)與多倉(cāng)庫(kù)的實(shí)現(xiàn)(Nexus)的文章就介紹到這了,更多相關(guān)Maven
相關(guān)文章
java從mysql導(dǎo)出數(shù)據(jù)的具體實(shí)例
這篇文章主要介紹了java從mysql導(dǎo)出數(shù)據(jù)的具體實(shí)例,有需要的朋友可以參考一下2013-12-12
myeclipse導(dǎo)出可運(yùn)行jar包簡(jiǎn)介
這篇文章主要介紹了myeclipse導(dǎo)出可運(yùn)行jar包簡(jiǎn)介,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
SpringTask-Timer實(shí)現(xiàn)定時(shí)任務(wù)的詳細(xì)代碼
在項(xiàng)目中開(kāi)發(fā)定時(shí)任務(wù)應(yīng)該一種比較常見(jiàn)的需求,今天通過(guò)示例代碼給大家講解SpringTask-Timer實(shí)現(xiàn)定時(shí)任務(wù)的相關(guān)知識(shí),感興趣的朋友一起看看吧2024-06-06
springboot動(dòng)態(tài)數(shù)據(jù)源+分布式事務(wù)的實(shí)現(xiàn)
本文主要介紹了springboot動(dòng)態(tài)數(shù)據(jù)源+分布式事務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
drools規(guī)則動(dòng)態(tài)化實(shí)踐解析
這篇文章主要為大家介紹了drools規(guī)則動(dòng)態(tài)化實(shí)踐解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
logback?EvaluatorFilter日志過(guò)濾器源碼解讀
這篇文章主要為大家介紹了logback?EvaluatorFilter日志過(guò)濾器源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
SpringBoot框架RESTful接口設(shè)置跨域允許
這篇文章主要為大家詳細(xì)介紹了SpringBoot框架RESTful接口設(shè)置跨域允許,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
SpringBoot利用樹(shù)形結(jié)構(gòu)優(yōu)化查詢速度
這篇文章主要為大家詳細(xì)介紹了SpringBoot利用樹(shù)形結(jié)構(gòu)優(yōu)化查詢速度,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08

