[TOC]
nexus3 環(huán)境配置
關(guān)于nexus私有化部署與安裝,我在上一篇已經(jīng)詳細的介紹了,不懂得可以參考《centos7配置nexus3(docker)服務(wù)器》
maven nexus私服配置與應(yīng)用
引言(balabala)
nexus 作為一款優(yōu)秀的倉庫管理工具,不僅支持maven、docker、npm、apt等多種倉庫的配置。它支持hosted\procxy\group三種模式提供存儲管理,nexus3 最新的還新增了store隔離存儲功能,通過UI創(chuàng)建不同的store為repo指定不同的存儲空間,達到物理隔離。
java后端開發(fā)人員,對于maven應(yīng)該不會陌生,對于一些優(yōu)秀的jar,我們都可以在maven倉庫當(dāng)中找到,同時maven還提供各類插件進行項目級的編譯、打包等工作。通過maven很大程度解決了我們對于包管理的問題。無論是使用外部庫還是內(nèi)部發(fā)布的jar包管理,基于nexus的maven私服為我們提供了這中管理功能。
- 代理倉庫,可以配置代理maven鏡像,公司內(nèi)部統(tǒng)一從私服拉取(配置代理的活讓運維去干吧
^-^,關(guān)鍵是拉過一次的包,在服務(wù)端是有緩存的,所以二次加載速度真的是飛快^-^) - hosted倉庫,按模塊編程方式,通過架構(gòu)師的設(shè)計,將功能隔離后獨立開發(fā)測試,到驗收階段,交付產(chǎn)物我們都可以通過maven的deploy進行產(chǎn)物的上傳與管理,項目組內(nèi)需要引用的小伙伴,想引用公共庫一樣來引用我們自己上傳的包,再也不用煩惱私有包管理版本核對啦(用了都說好
^-^)。 - group倉庫,看了proxy 倉庫的同學(xué),肯定有疑問啦,maven各類公開倉庫還是很多的,再加上一個hosted的 releases與snapshots,難道每次拉包,都要去切換嗎? no no no, group 就是解決該問題的。通過穿梭框配置方式,打包你需要的倉庫,統(tǒng)一配置。
nexus3 maven常用代理倉庫配置
- maven cent
maven中心倉庫,速度不怎么樣,主要是全,所以建議代理一個
地址: https://repo1.maven.org/maven2/
(nexus3 缺省給創(chuàng)建好了, 貼心 +1)
- aliyun
這個就是國內(nèi)最受歡迎的鏡像啦,不僅全而且速度非???,
地址: https://maven.aliyun.com/repository/public
阿里良心,點贊 +1
- spring
spring 有兩個庫,連接速度沒怎么測過,大多庫的拉取都有優(yōu)先走ali,估計速度應(yīng)該會很感人,不過作為補充還是貼上來,對于最新的一些庫,該倉庫還是快一些的
地址(releases): https://repo.spring.io/milestone
地址(snapshots): https://repo.spring.io/snapshot
創(chuàng)建方法




Ps. 這里缺省只有一個default,其它的都是我自己通過store管理創(chuàng)建,他的作用其實就是隔離存儲,nexus3新增的,感覺很實用。有一次遷移私服,光maven就有十幾個G。
nexus3 私用releases與snapshots倉庫配置,構(gòu)建公司級倉庫
配置hosted倉庫要比配置proxy簡單。上述步驟一樣,少了配置代理進行地址的填寫一項。
有一點要注意的是,在deploymentPolicy一項,請選擇allow redeploy(缺省是 disabled)
nexus3 缺省給你配置了maven-releases和maven-snapshots連個hosted倉庫 (貼心+2^-^)
配置group 倉庫
配置group倉庫就更簡單啦,點擊創(chuàng)建->選擇group->取個名字,拉到最下面,讓后將你要整合的repo移到右側(cè)即可
本地maven配置
玩過maven的都知道,maven的配置是通過settings.xml進行配置的。這里我們需要配置的東西不多,就mirrors和servers。配置mirrors是為了讓本地maven從私服來拉取資源;配置servers主要是用來對本地的包進行deploy管理。
- settings.xml的位置
無論是windows還是unix類系統(tǒng),你如果是缺省安裝,他基本都在你當(dāng)時安裝的用戶配置下,一個隱藏文件
.m2下。當(dāng)然你也可能是是自己配置的環(huán)境變量,獲取配置文件應(yīng)該在安裝目錄 ./conf/seetings.xml內(nèi)
- mirrors
<mirrors>
<mirror>
<id>releases</id>
<url>這里填寫你的group倉庫地址(不知道的打開nexus,點擊repo進去就有url屬性,拷貝過來)</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
- servers
<!-- 這里特別說明一下,servers配置的ID很關(guān)鍵,這個與你項目里面的distrubtionManagement下配置的倉庫ID一致,否則會報unauth錯誤的 -->
<servers>
<server>
<id>releases</id>
<username>你的用戶名</username>
<password>你的密碼</password>
</server>
<server>
<id>nexus-releases</id>
<username>你的用戶名</username>
<password>你的密碼</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>你的用戶名</username>
<password>你的密碼</password>
</server>
</servers>
本地module/project 打包部署配置
在項目級maven管理中,將本地編譯成果部署到私服上去,需要配置distributionManagement, 其實這個配置你在舊nexus里面也可以找到,nexus3沒有找到,大家可以參考一下我的,我用Xxx:xxx屏蔽了我的IP和端口,大家參照自己設(shè)置的hosted的releases和snapshots來配置就好啦。
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>localRelease</name>
<url>http://xxx:xxx/repository/maven-snapshots/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>localSnapshot</name>
<url>http://xxx:xxx/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
關(guān)于權(quán)限配置的問題
如果碰到授權(quán)問題,檢查一下你的distrubutionManagement內(nèi)的repo的id與你當(dāng)前有效settings.xml(一定要確定有效的,我自己配置了多套環(huán)境,IDEA可以覆蓋加載,你可通過指定setting.xml方式來確認(rèn))內(nèi)配置的id是否一致。主要是這個原因?qū)е碌模?/p>
使用
通過 mvn install 命令,通過控制臺,你可以非常清晰的看到它從配置的mirrors拉取依賴包
通過 deploy發(fā)布本地包時,會進行嚴(yán)格的權(quán)限校驗,必須配置 distributionManegement.同時通過版本號自動確認(rèn)部署至 releases或snapshots。當(dāng)然,你也可以通過 mvn releases:prepare 等命令來實現(xiàn)relesase的發(fā)布