為什么要搭建私服
搭建Nexus私服的主要目的是為了解決工作上組件之間的jar包依賴管理。特別是基礎(chǔ)架構(gòu)部門(mén)的jar包要共享出來(lái),就需要把jar包deploy發(fā)布到nexus私服上。
第一步: 安裝Nexus
準(zhǔn)備工作
- 找一臺(tái)linux系統(tǒng)的虛擬機(jī)服務(wù)器,系統(tǒng)centos 7
- jdk 1.8
- nexus-3.9.0-01-unix.tar.gz
- 客戶端安裝了maven
下載與安裝
- 下載安裝包:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw,可以到官網(wǎng)上去下載最新版本的。
- 上傳并解壓安裝包
xshell工具將安裝包上傳服務(wù)器:/usr/local/nexus目錄下
執(zhí)行解壓:
tar -xzvf nexus-3.9.0-01-unix.tar.gz
- 修改配置
可以在nexus-default.properties文件中(位于/nexus-3.9.0-01/etc/目錄下)修改WEB訪問(wèn)端口等信息,默認(rèn)為8081端口;
防火墻放行8081端口; - 啟動(dòng)
執(zhí)行: cd nexus-3.9.0-01/bin,進(jìn)入到bin目錄,執(zhí)行:
./nexus run
檢驗(yàn)是否安裝成功
打開(kāi)瀏覽器,訪問(wèn):http://ip地址:8081/
默認(rèn)用戶名 admin 默認(rèn)密碼 admin123

到此,Nexus 安裝完成。
第二步: 配置Nexus
私服工作原理:
配置Nexus之前,需要先了解一下私服的工作原理,如下圖:
找依賴包的流程: 首先在本地倉(cāng)庫(kù)中找,如果沒(méi)命中,那么就找遠(yuǎn)程私服;遠(yuǎn)程私服的查找規(guī)則同樣是先找host屬性的私有庫(kù),然后再去找proxy屬性的遠(yuǎn)程倉(cāng)庫(kù);可以配置多個(gè)proxy;
Nexus倉(cāng)庫(kù)類型介紹
默認(rèn)安裝有以下這幾個(gè)倉(cāng)庫(kù),在控制臺(tái)也可以修改遠(yuǎn)程倉(cāng)庫(kù)的地址,第三方倉(cāng)庫(kù)等。
- hosted(宿主倉(cāng)庫(kù)庫(kù)) :存放本公司開(kāi)發(fā)的jar包(正式版本、測(cè)試版本)
- proxy(代理倉(cāng)庫(kù)):代理中央倉(cāng)庫(kù)、Apache下測(cè)試版本的jar包
- group(組倉(cāng)庫(kù)):使用時(shí)連接組倉(cāng)庫(kù),包含Hosted(宿主倉(cāng)庫(kù))和Proxy(代理倉(cāng)庫(kù))
分組倉(cāng)庫(kù)的配置
如上圖所示,maven-public就我創(chuàng)建的組倉(cāng)庫(kù)。以及還創(chuàng)建了3個(gè)代理倉(cāng)庫(kù),如下。
1、jCenter阿里云倉(cāng)庫(kù):http://maven.aliyun.com/nexus/content/groups/public/
2、maven中央倉(cāng)庫(kù):https://repo1.maven.org/maven2/
最后建立組倉(cāng)庫(kù)maven-public,如下。
組倉(cāng)庫(kù)中包含了jcenter、maven-central、本地maven-releases,本地maven-snapshots。
** 至此,Nexus基本就這么配置好了,主要在Group組中配置一個(gè)代理私服。**
第三步:配置下載依賴 setting.xml
添加maven倉(cāng)庫(kù)鏡像
創(chuàng)建好組倉(cāng)庫(kù)之后,修改setting.xml文件,添加maven倉(cāng)庫(kù)鏡像,如下:
<mirror>
<id>nexus-myself</id>
<!--*指的是訪問(wèn)任何倉(cāng)庫(kù)都使用我們的私服-->
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
</mirror>
全局配置下載依賴(即項(xiàng)目pom無(wú)需配置)
在maven的setting.xml文件中配置私服配置,這種方式配置后所有本地使用該配置的maven項(xiàng)目的pom文件都無(wú)需配置私服下載相關(guān)配置。
<profiles>
<profile>
<id>mycof</id>
<repositories>
<!-- 私有庫(kù)地址-->
<repository>
<id>nexus</id>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--插件庫(kù)地址-->
<pluginRepository>
<id>nexus</id>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
激活使用上面的配置
<!--激活profile-->
<activeProfiles>
<activeProfile>mycof</activeProfile>
</activeProfiles>
單獨(dú)項(xiàng)目下載依賴(即項(xiàng)目pom文件中配置)
這種配置是修改單個(gè)項(xiàng)目的pom文件,無(wú)需修改maven的setting配置
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.124.29:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
建議使用全局的setting配置,一個(gè)項(xiàng)目組共用一個(gè)maven的setting配置,項(xiàng)目中就無(wú)需配置下載相關(guān)的私服倉(cāng)庫(kù)配置
第四步:上傳jar包配置
對(duì)于中央倉(cāng)庫(kù)沒(méi)有的jar包,需要我們自己將jar包發(fā)布到私服中去,其中jar包主要分為兩類,
一類是本地自己開(kāi)發(fā)供給項(xiàng)目組其余同事使用,這種直接配置項(xiàng)目的pom文件和maven的setting文件,之后deploy發(fā)布即可發(fā)布到;
另一類是第三方j(luò)ar包,可以直接使用web頁(yè)面上傳并設(shè)置對(duì)應(yīng)GAV即可;
本地maven開(kāi)發(fā)的項(xiàng)目上傳配置
1.maven的setting文件配置
這里要配置配置上傳用戶及倉(cāng)庫(kù)信息,我這里直接使用了admin用戶,在nenus2.x中還內(nèi)置了一個(gè)deployment/deployment123用戶,在3.x該用戶被移除了,這里可以自己配置角色和用戶,我就直接使用admin用戶了
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
2.項(xiàng)目中的pom文件配置
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.124.29:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.124.29:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
3.執(zhí)行maven的deploy命令
這是myeclipse中上傳本地項(xiàng)目jar到私服,IDEA中更為簡(jiǎn)單直接點(diǎn)擊maven周期中的deploy即可

出現(xiàn)uploading信息并且沒(méi)報(bào)錯(cuò)說(shuō)明上傳成功。
然后到對(duì)應(yīng)的倉(cāng)庫(kù)中查看

注意:
這里只有Snapshot的倉(cāng)庫(kù)上傳成功,Release倉(cāng)庫(kù)并沒(méi)有上傳成功,這是因?yàn)榘姹咎?hào)名稱結(jié)尾有SNAPSHOT,默認(rèn)以這個(gè)結(jié)尾是不會(huì)上傳到Release倉(cāng)庫(kù)去的,去除就會(huì)上傳到Release倉(cāng)庫(kù)且不會(huì)上傳到快照倉(cāng)庫(kù)
Release倉(cāng)庫(kù)默認(rèn)不支持重復(fù)發(fā)布,可配置
注意setting中server標(biāo)簽下的id要和pom文件中倉(cāng)庫(kù)配置的id相同,即指定上傳到哪個(gè)倉(cāng)庫(kù)
第三方j(luò)ar包上傳
對(duì)于第三方j(luò)ar包的上傳采用nenus提供的web界面上傳,上傳成功后需要使用該jar包的話,依賴中填寫(xiě)自定義的GAV即可




