引言
最近突然想自己搭建個(gè)maven私服nexus,然后就動(dòng)手搭了一遍。這個(gè)過(guò)程中自己對(duì)maven的一些配置有新的理解钞啸。學(xué)習(xí)嘛,有個(gè)輸出會(huì)更加深印象吧喇潘,所以想把自己搭建nexus和一些新的理解記錄下來(lái)体斩,也可以供自己以后復(fù)習(xí)。
一 nexus搭建
參考文章:http://www.reibang.com/p/1cfbc1518fce
1環(huán)境準(zhǔn)備颖低,這里不詳細(xì)說(shuō)了絮吵,會(huì)java的這些都是基礎(chǔ)了。
centos7忱屑,jdk1.8蹬敲,nexus-3.9.0-01-unix.tar.gz
Nexus官網(wǎng)下載壓縮包巨慢,經(jīng)常下載不了
這里提供一個(gè)網(wǎng)上的網(wǎng)盤(pán)下載地址:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw
2 解壓縮
tar -zxvf ?nexus-3.9.0-01-unix.tar.gz
3 進(jìn)入bin目錄
4 運(yùn)行
注意:如果你的系統(tǒng)可用內(nèi)存不夠會(huì)報(bào)錯(cuò)莺戒,此時(shí)可用修改nexus啟動(dòng)內(nèi)存
默認(rèn)是1200M伴嗡,我這里修改成了512M,但不能過(guò)小从铲,過(guò)小的話啟動(dòng)時(shí)還是會(huì)內(nèi)存不夠
我最開(kāi)始修改成128M瘪校,就啟動(dòng)不起來(lái)。
5 檢查是否成功
訪問(wèn)Ip:8081名段,注意系統(tǒng)的8081端口開(kāi)放阱扬。8081端口是默認(rèn)端口,也可以修改
進(jìn)行登錄伸辟,有個(gè)默認(rèn)用戶:admin/admin123
二 nexus簡(jiǎn)單看看
Nexus默認(rèn)就有這些maven倉(cāng)庫(kù)了
首先說(shuō)些倉(cāng)庫(kù)類(lèi)型
Proxy:代理庫(kù)价认,這就是個(gè)遠(yuǎn)程參考,例如:maven-central這個(gè)倉(cāng)庫(kù)就是代理的maven的中央倉(cāng)庫(kù)自娩。
Hosted:本地庫(kù)用踩,就是nexus機(jī)器上的本地倉(cāng)庫(kù)渠退。我們自己的jar可以上傳到這里。
Group:組脐彩,好幾個(gè)倉(cāng)庫(kù)可以歸為一組碎乃,能夠包含 proxy,hosted倉(cāng)庫(kù)。
Jar下載流程: 先本地maven庫(kù)惠奸,再私服group倉(cāng)庫(kù)梅誓,group倉(cāng)庫(kù)規(guī)則:先hosted本地庫(kù),再proxy遠(yuǎn)程庫(kù)佛南。
三 nexus倉(cāng)庫(kù)新增
我們可以新增一個(gè)proxy庫(kù)梗掰,連個(gè)hosted庫(kù)(一個(gè)release,一個(gè)snapshot),一個(gè)group倉(cāng)庫(kù)把這些新增的庫(kù)都包含進(jìn)去。
1 proxy庫(kù)嗅回,我們新增一個(gè)aliyun的maven代理倉(cāng)庫(kù)
http://maven.aliyun.com/nexus/content/groups/public/
然后點(diǎn)擊創(chuàng)建就可以了
2 創(chuàng)建hosted庫(kù)及穗,順序一樣,記得選擇 maven2(hosted)
3 創(chuàng)建group倉(cāng)庫(kù)绵载,選擇maven2(group)
我們maven鏈接group倉(cāng)庫(kù)時(shí)埂陆,group倉(cāng)庫(kù) 會(huì)先從 hosted類(lèi)型的倉(cāng)庫(kù)逐一查找,沒(méi)找到 在從proxy類(lèi)型的倉(cāng)庫(kù)中逐一查找娃豹。
四 使用私服
Settings.xml文件中配置 私服鏡像
Url我們一般配置成 group倉(cāng)庫(kù)的地址焚虱, 在nexus上可以找到
五 項(xiàng)目直接deploy到私服上去
1 項(xiàng)目中的pom進(jìn)行配置
<distributionManagement>????<repository>????????<id>my-release</id>????????<name>Nexus Release Repository</name>????????<url>http://xx.xx.xx.xx:8081/repository/mys-release/</url>????</repository>????<snapshotRepository>????????<id>my-snapshot</id>????????<name>Nexus Snapshot Repository</name>????????<url>http://xx.xx.xx.xx:8081/repository/my-snapshot/</url>????</snapshotRepository></distributionManagement>
2 hosted倉(cāng)庫(kù)的 deployment policy 要改成allow redeploy
3 settings.xml中配置用戶名密碼
注意:pom中配置的repository的id 和這里的id要對(duì)應(yīng)一樣
??<servers>
????<server> ?
????????<id>my-release</id> ?
????????<username>admin</username> ?
????????<password>admin123</password> ?
????</server> ?
????<server> ?
????????<id>my-snapshot</id> ?
????????<username>admin</username> ?
????????<password>admin123</password> ?
????</server>
??</servers>
上面三步配置完成后,可以在idea中雙擊maven的生命周期中的deploy
成功后再nexus的 相關(guān)倉(cāng)庫(kù)中就可以看到相關(guān)的jar包了
六 deploy后 進(jìn)行maven依賴(lài)
直接在pom中進(jìn)行dependency依賴(lài)就可以了懂版。把項(xiàng)目的坐標(biāo)依賴(lài)過(guò)去
注意了鹃栽,這時(shí)你可能還是依賴(lài)不成功。
為什么呢躯畴?因?yàn)槟J(rèn)不能從從snapshot倉(cāng)庫(kù)中下載依賴(lài)的民鼓。此時(shí)你要開(kāi)啟這個(gè)功能
可以在settings.xml中進(jìn)行配置,項(xiàng)目中也可以私股,但xml中配置了 所有的項(xiàng)目都可以用了摹察。
<profiles>
??<profile>
?????<id>mycof</id>
????????<repositories>
??????????<repository>
??????????<id>nexus</id>
??????????<url>http://ip:8081/repository/my-public/</url>
??????????<releases>
????????????<enabled>true</enabled>
??????????</releases>
??????????<snapshots>
????????????<enabled>true</enabled>
??????????</snapshots>
????????</repository>
??????</repositories> ?????
??????<pluginRepositories>
????????<pluginRepository>
??????????<id>nexus</id>
??????????<url>http://ip:8081/repository/my-public/</url>
??????????<releases>
????????????<enabled>true</enabled>
??????????</releases>
??????????<snapshots>
????????????<enabled>true</enabled>
???????????</snapshots>
????????</pluginRepository>
??????</pluginRepositories>
????</profile>
</profiles>
<activeProfiles>
??<activeProfile>mycof</activeProfile>
</activeProfiles>
?
此時(shí)就可以正常從snapshot庫(kù)中下載依賴(lài)了
七 第三方j(luò)ar包直接通過(guò)nexus頁(yè)面上傳
上傳后去相應(yīng)倉(cāng)庫(kù)中查看
這樣就成功了
在項(xiàng)目中就可以正常依賴(lài)了
到此nexus的搭建和使用告一段落了恩掷,日常的使用就足夠了倡鲸。
接下來(lái)討論下我在搭建使用過(guò)程中的一個(gè)疑問(wèn)吧。
有沒(méi)有發(fā)現(xiàn)settings.xml中 mirro和repository同時(shí)配置了
我當(dāng)時(shí)就疑問(wèn)了黄娘,這兩者有啥區(qū)別呢峭状?
參考文章:https://my.oschina.net/sunchp/blog/100634
1 mirro相當(dāng)于是個(gè)攔截器
比如我們配置訪問(wèn)a倉(cāng)庫(kù) ,但是經(jīng)過(guò)它的攔截 會(huì)訪問(wèn)到它指向的倉(cāng)庫(kù)
2 repository就是配置我們maven要訪問(wèn)的倉(cāng)庫(kù)逼争。
如果沒(méi)有配置默認(rèn)是中央倉(cāng)庫(kù)
所以如果我們?cè)趓epository中直接配置我們的nexus倉(cāng)庫(kù)优床,那mirro就可以不用配置了。
今天的學(xué)習(xí)就到這了誓焦,下次見(jiàn)胆敞!