maven快速入门第十七讲——从私服下载jar包到本地仓库
沒(méi)有配置nexus之前,如果本地倉(cāng)庫(kù)沒(méi)有,那么會(huì)去中央倉(cāng)庫(kù)下載,通常在企業(yè)中會(huì)在局域網(wǎng)內(nèi)部署一臺(tái)私服服務(wù)器,有了私服之后,本地項(xiàng)目會(huì)首先去本地倉(cāng)庫(kù)找jar包,如果沒(méi)有找到則連接私服從私服下載jar包,如果私服沒(méi)有jar包私服同時(shí)作為代理服務(wù)器從中央倉(cāng)庫(kù)下載jar包,這樣做的好處是一方面由私服對(duì)公司項(xiàng)目的依賴jar包統(tǒng)一管理,一方面提高下載速度,項(xiàng)目連接私服下載jar包的速度要比項(xiàng)目連接中央倉(cāng)庫(kù)下載jar包的速度快得多。
在本講中,我將會(huì)演示如何從私服上下載jar包(是將crm-dao項(xiàng)目打包成的jar包),并進(jìn)行測(cè)試。
管理倉(cāng)庫(kù)組
nexus中包括很多倉(cāng)庫(kù),hosted中存放的是企業(yè)自己發(fā)布的jar包及第三方公司的jar包,proxy中存放的是中央倉(cāng)庫(kù)的jar包。為了方便從私服下載jar包,可以將多個(gè)倉(cāng)庫(kù)組成一個(gè)倉(cāng)庫(kù)組,每個(gè)工程需要連接私服的倉(cāng)庫(kù)組下載jar包。
你有沒(méi)有想過(guò)如何來(lái)配置倉(cāng)庫(kù)組啊?首先啟動(dòng)nexus服務(wù),然后在瀏覽器地址欄中輸入http://localhost:8081/nexus/這樣的url地址進(jìn)行訪問(wèn),接著你會(huì)看到在右上角有個(gè)Log In的超鏈接,點(diǎn)擊它并使用nexus內(nèi)置賬戶(用戶名是admin,密碼是admin123)進(jìn)行登錄,登錄成功之后,你便會(huì)看到如下圖所示的效果。
點(diǎn)擊頁(yè)面左側(cè)的Repositories超鏈接就能看到倉(cāng)庫(kù)組了,接著你就可以配置倉(cāng)庫(kù)組了。
上圖中倉(cāng)庫(kù)組包括了本地倉(cāng)庫(kù)、代理倉(cāng)庫(kù)等。
在settings.xml文件中配置倉(cāng)庫(kù)
在客戶端的settings.xml文件中配置私服的倉(cāng)庫(kù),也稱之為配置模板。由于settings.xml文件中沒(méi)有repositories的配置標(biāo)簽,所以需要使用profile標(biāo)簽來(lái)定義倉(cāng)庫(kù)。
<profile><!-- profile的id --><id>dev</id><repositories><repository><!-- 倉(cāng)庫(kù)id,repositories標(biāo)簽內(nèi)可以配置多個(gè)倉(cāng)庫(kù),但要保證id不重復(fù) --><id>nexus</id><!-- 倉(cāng)庫(kù)地址,即nexus倉(cāng)庫(kù)組的地址 --><url>http://localhost:8081/nexus/content/groups/public/</url><!-- 是否下載releases構(gòu)件 --><releases><enabled>true</enabled></releases><!-- 是否下載snapshots構(gòu)件 --><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><!-- 插件倉(cāng)庫(kù),maven的運(yùn)行依賴插件也需要從私服下載 --><pluginRepository><!-- 插件倉(cāng)庫(kù)的id不允許重復(fù),如果重復(fù)后邊的配置會(huì)覆蓋前邊的配置 --><id>public</id><name>Public Repositories</name><url>http://localhost:8081/nexus/content/groups/public/</url></pluginRepository></pluginRepositories> </profile>一定要注意,以上配置要添加在settings.xml文件中的profiles標(biāo)簽內(nèi)。
使用profile標(biāo)簽定義倉(cāng)庫(kù)之后,需要激活才可生效,也即需要激活模板。所以,還需要在settings.xml文件中添加如下配置。
settings.xml文件配置好了之后,我們可以通過(guò)eclipse來(lái)查看一下有效pom(有效pom是maven軟件最終使用的pom內(nèi)容,程序員不能直接編輯有效pom),例如查看一下crm-dao項(xiàng)目的有效pom。
可以看到crm-dao項(xiàng)目的有效pom中有如下內(nèi)容。
從以上內(nèi)容中可得知有兩個(gè)倉(cāng)庫(kù)地址,maven會(huì)先從前邊的倉(cāng)庫(kù)找,如果找不到j(luò)ar包再?gòu)南逻叺膫}(cāng)庫(kù)找,從而就實(shí)現(xiàn)了從私服下載jar包。
測(cè)試從私服下載jar包
測(cè)試環(huán)境:局域網(wǎng)環(huán)境或本地網(wǎng)絡(luò)
首先,將本地倉(cāng)庫(kù)中的由crm-dao項(xiàng)目打包成的jar包刪除掉。
此時(shí),發(fā)現(xiàn)crm-service項(xiàng)目并沒(méi)有報(bào)錯(cuò),這是為什么呢?因?yàn)樗F(xiàn)在引用的是crm-dao這么一個(gè)項(xiàng)目。
如果說(shuō)現(xiàn)在我們?cè)趀clipse中把crm-dao項(xiàng)目關(guān)閉掉,并且切換到maven控制臺(tái),你便能看到maven控制臺(tái)中輸出了如下信息。
項(xiàng)目先從本地倉(cāng)庫(kù)找crm-dao,找不到再?gòu)乃椒?#xff0c;由于之前執(zhí)行deploy命令已經(jīng)將crm-dao部署了到私服中,所以可以成功從私服上下載crm-dao并在本地倉(cāng)庫(kù)中保存一份。
從私服下載jar包后,項(xiàng)目有可能會(huì)報(bào)錯(cuò),不用擔(dān)心,更新一下項(xiàng)目即可。
測(cè)試環(huán)境:互聯(lián)網(wǎng)環(huán)境
在項(xiàng)目的pom.xml文件中添加一個(gè)依賴,此依賴在本地倉(cāng)庫(kù)和私服中都不存在,此時(shí),maven會(huì)先從本地倉(cāng)庫(kù)找,本地倉(cāng)庫(kù)沒(méi)有再?gòu)乃椒?#xff0c;私服沒(méi)有再去中央倉(cāng)庫(kù)下載,jar包下載成功后,在私服、本地倉(cāng)庫(kù)中分別存儲(chǔ)一份。
總結(jié)
以上是生活随笔為你收集整理的maven快速入门第十七讲——从私服下载jar包到本地仓库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 04 MySQL多实例部署
- 下一篇: Maven无法从nexus私服下载依赖?