maven倉(cāng)庫(kù)repositories和mirrors的配置及區(qū)別詳解
maven倉(cāng)庫(kù)配置
倉(cāng)庫(kù)優(yōu)先級(jí)為:本地倉(cāng)庫(kù)(localRepositories) > profile中的repositories倉(cāng)庫(kù) > POM > mirrors全局倉(cāng)庫(kù)
通過mirror配置
如果倉(cāng)庫(kù)X可以提供倉(cāng)庫(kù)Y所有的內(nèi)容,那么我們就可以認(rèn)為X是Y的一個(gè)鏡像,通俗點(diǎn)說(shuō),可以從Y獲取的構(gòu)件都可以從他的鏡像中進(jìn)行獲取??梢圆捎苗R像的方式配置遠(yuǎn)程倉(cāng)庫(kù),鏡像在settings.xml中進(jìn)行配置,在setting.xml中的<mirrors>標(biāo)簽下加入如下子標(biāo)簽配置便配置了一個(gè)maven鏡像。
<mirror> <id>alimaven</id> <name>aliyun maven</name> <!--mirrorOf的配置很重要后面會(huì)詳細(xì)說(shuō)明--> <mirrorOf>central</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
添加如上配置后,maven會(huì)讀取setting.xml中配置的mirror作為jar包的下載地址,我們以在項(xiàng)目中下載fastjson為例來(lái)看一下效果。
可以看到,配置了上面的mirror后,maven是從aliyun倉(cāng)庫(kù)下載的jar包,不配置的時(shí)候,默認(rèn)從apache的maven中央倉(cāng)庫(kù)下載的jar包。
上面提到,<mirrorOf></mirrorOf>的設(shè)置很重要,比如上面我設(shè)置的mirrorOf為<mirrorOf>central</mirrorOf>,如果<mirrorOf></mirrorOf>我隨便設(shè)置一個(gè)參數(shù),如<mirrorOf>abc</mirrorOf>,這時(shí)候我們配置的倉(cāng)庫(kù)就不起作用了,這是因?yàn)閙aven默認(rèn)內(nèi)置了如下一個(gè)倉(cāng)庫(kù),這個(gè)默認(rèn)倉(cāng)庫(kù)的id為central,當(dāng)我們把mirrorOf設(shè)置為<mirrorOf>central</mirrorOf>時(shí),maven就會(huì)查找有沒有id為central的倉(cāng)庫(kù),然后把id為central的倉(cāng)庫(kù)地址換成我們<mirror>標(biāo)簽配置的那個(gè)url,這樣我們配置的mirror才會(huì)起作用。當(dāng)然我們也可以把mirrorOf設(shè)置為<mirrorOf>*</mirrorOf>,表示所有倉(cāng)庫(kù)都使用我們配置的這個(gè)mirror作為jar包下載地址。
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
通過<repositories>配置
通過setting.xml方式配置會(huì)對(duì)所有maven項(xiàng)目生效,如果只想在本項(xiàng)目中配置一個(gè)maven倉(cāng)庫(kù),可以通過在pom.xml中配置<repositories>標(biāo)簽來(lái)實(shí)現(xiàn)。在自己的maven項(xiàng)目的pom.xml中添加如下配置,就配置好了一個(gè)倉(cāng)庫(kù)。這時(shí)候,maven會(huì)優(yōu)先采用這個(gè)配置,而不會(huì)去讀setting.xml中的配置了。這樣配置好后,maven就會(huì)自動(dòng)從aliyun下載jar包了。
<repositories> <repository> <id>aliyun-releases</id> <name>阿里云倉(cāng)庫(kù)(name可以隨便起)</name> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories>
我們知道,repositories標(biāo)簽下可以配置多個(gè)repository,如果我們配置了多個(gè)repository,maven會(huì)用哪個(gè)呢,答案是按出現(xiàn)順序使用,如果第1個(gè)可用,就用第一個(gè),如果不可用,就依次往下找,下面的2張圖片可以說(shuō)明這個(gè)問題。
上面配置<repository>時(shí)<id>似乎也沒什么用,確實(shí)是,如果你只是在pom.xml中配置個(gè)倉(cāng)庫(kù),這個(gè)id是沒什么用的,可以隨便寫,其實(shí)這個(gè)id是配合上面講的mirror一塊使用的,還記得mirrorOf嗎,我們配置mirrorOf為<mirrorOf>central</mirrorOf>是,mirror中的url就是central倉(cāng)庫(kù)的url給覆蓋了,所以這里的<repository>標(biāo)簽下的id是給mirrorOf用的。
可以看下面一個(gè)例子,本來(lái)我們的abc-releases這個(gè)倉(cāng)庫(kù)是不可用的,因?yàn)楦揪蜎]有https://abc.def.com/repository/public/這個(gè)倉(cāng)庫(kù),但是我們通過mirror配置,改變了id為abc-releases這個(gè)倉(cāng)庫(kù)的url,從而使用maven也可以從id為abc-releases這個(gè)倉(cāng)庫(kù)下載jar包了。當(dāng)然這樣配置也沒只啥意義,只是為了方便理解repository和mirror之間的關(guān)系。
maven倉(cāng)庫(kù)配置的其他選項(xiàng)
<!--releases和snapshots中有個(gè)enabled屬性,是個(gè)boolean值,默認(rèn)為true, 表示是否需要從這個(gè)遠(yuǎn)程倉(cāng)庫(kù)中下載穩(wěn)定版本或者快照版本的構(gòu)建, 一般使用第三方的倉(cāng)庫(kù),都是下載穩(wěn)定版本的構(gòu)建。--> <repository> <id>aliyun-releases</id> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository>
maven默認(rèn)的內(nèi)置倉(cāng)庫(kù)的配置位置
<!-- 可以從以下文件中找到maven倉(cāng)庫(kù)的默認(rèn)配置如下 apache-maven-3.6.1\lib\maven-model-builder-3.6.1.jar\org\apache\maven\model\pom-4.0.0.xml --> <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
到此這篇關(guān)于maven倉(cāng)庫(kù)repositories和mirrors的配置及區(qū)別詳解的文章就介紹到這了,更多相關(guān)maven倉(cāng)庫(kù)repositories和mirrors配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- maven倉(cāng)庫(kù)中心mirrors配置多個(gè)下載中心(執(zhí)行最快的鏡像)
- IDEA最新版2020.1的maven工程本地依賴倉(cāng)庫(kù)無(wú)法使用問題(已解決)
- Maven發(fā)布封裝到中央倉(cāng)庫(kù)時(shí)候報(bào)錯(cuò):no default secret key
- Maven遠(yuǎn)程倉(cāng)庫(kù)地址修改實(shí)現(xiàn)解析
- 如何通過Maven倉(cāng)庫(kù)安裝Spire系列的Java產(chǎn)品
- Windows下maven安裝配置圖文教程(包括本地化倉(cāng)庫(kù)配置)
- 詳解如何將JAR包發(fā)布到Maven中央倉(cāng)庫(kù)
- Maven訪問倉(cāng)庫(kù)順序代碼實(shí)例解析
相關(guān)文章
深度deepin安裝以及jdk、tomcat、Nginx安裝教程
這篇文章主要給大家介紹了關(guān)于深度deepin安裝以及jdk、tomcat、Nginx安裝的相關(guān)資料,按照文中介紹的方法可以輕松的實(shí)現(xiàn)安裝,對(duì)大家的工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01Java8函數(shù)式接口Predicate用法示例詳解
這篇文章主要為大家介紹了Java8函數(shù)式接口Predicate用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07SpringBoot配置連接兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)的常用方法
在Spring Boot應(yīng)用中連接多個(gè)數(shù)據(jù)庫(kù)或數(shù)據(jù)源可以使用多種方式,本文講給大家介紹兩種常用的方法:使用Spring Boot官方支持的多數(shù)據(jù)源配置和使用第三方庫(kù)實(shí)現(xiàn)多數(shù)據(jù)源,文章通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08Spring Boot啟動(dòng)過程(六)之內(nèi)嵌Tomcat中StandardHost、StandardContext和Sta
這篇文章主要介紹了Spring Boot啟動(dòng)過程(六)之內(nèi)嵌Tomcat中StandardHost、StandardContext和StandardWrapper的啟動(dòng)教程詳解,需要的朋友可以參考下2017-04-04Spring中@Async注解實(shí)現(xiàn)異步調(diào)詳解
在本篇文章里小編給大家分享的是關(guān)于Spring中@Async注解實(shí)現(xiàn)異步調(diào)詳解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-04-04java中的char占幾個(gè)字節(jié)實(shí)例分析
這篇文章主要介紹了java中的char占幾個(gè)字節(jié)實(shí)例分析的相關(guān)資料,需要的朋友可以參考下2017-04-04詳細(xì)介紹Java阿里云的短信驗(yàn)證碼實(shí)現(xiàn)
這篇文章主要介紹了詳細(xì)介紹Java阿里云的短信驗(yàn)證碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Spring實(shí)現(xiàn)加法計(jì)算器和用戶登錄功能
在前后端分離的Web開發(fā)模式中,接口(API)扮演著至關(guān)重要的角色,它是前后端交互的橋梁,創(chuàng)建加法計(jì)算器和用戶登錄功能時(shí),介紹了接口測(cè)試和問題解決的一般流程,如使用Postman測(cè)試接口、查看日志、處理緩存問題等,確保開發(fā)過程中的高效協(xié)作和問題快速定位2024-10-10