Maven實(shí)戰(zhàn)與原理分析(四):手把手帶你搭建maven私有倉(cāng)庫(kù)
點(diǎn)擊上方“Java技術(shù)江湖”,選擇“設(shè)為星標(biāo)”
回復(fù)”666“獲取全網(wǎng)最熱的Java核心知識(shí)點(diǎn)整理
Maven的原理就是將jar從遠(yuǎn)程中央倉(cāng)庫(kù)下載到PC磁盤(pán)的本地倉(cāng)庫(kù),當(dāng)本地倉(cāng)庫(kù)沒(méi)有發(fā)現(xiàn)需要的jar就會(huì)去Maven默認(rèn)的遠(yuǎn)程中央倉(cāng)庫(kù)Maven Central(由Apache維護(hù))中尋找,每次需要新的jar后都要從遠(yuǎn)程中央倉(cāng)庫(kù)上下載。那么問(wèn)題來(lái)了?這個(gè)遠(yuǎn)程的中央倉(cāng)庫(kù)一定有很多人使用那下載速度一定很慢,這個(gè)暫且不用考慮。重要的是萬(wàn)一哪天公司外網(wǎng)連不上了咋辦?而Nexus私服恰好可以解決這個(gè)問(wèn)題。搭建私服的好處是Nexus有效解決了Maven對(duì)Apache的遠(yuǎn)程中央倉(cāng)庫(kù)的依賴,當(dāng)項(xiàng)目需要新的jar時(shí)會(huì)先在nexus私服下載好以后才會(huì)下載到本地。如果發(fā)現(xiàn)私服已經(jīng)存在這個(gè)jar包,則會(huì)直接從私服下載到本地Maven庫(kù),如果沒(méi)有再去網(wǎng)絡(luò)上下載。同時(shí),我們也可打包自己的代碼變成jar包上傳到私服中供公司其他同事下載使用。
準(zhǔn)備工作 安裝Nexus 之前先確定是否已經(jīng)安裝JDK,這里安裝的是jdk8版本(如何安裝JDK步驟敘述,)
安裝Nexus nexus下載地址 下載完成后解壓安裝 解壓 tar -zvxf nexus-3.13.0-01-unix.tar.gz -C /opt/
復(fù)制代碼 環(huán)境變量配置 vim /opt/nexus-3.13.0-01/bin/nexus
//配置JDK 路徑
INSTALL4J_JAVA_HOME_OVERRIDE=/opt/jdk1.8.0_181
復(fù)制代碼 啟動(dòng)Nexus /opt/nexus-3.13.0-01/bin/nexus start 復(fù)制代碼
瀏覽器打開(kāi)Nexus界面,默認(rèn)端口號(hào)是8081(注意需要判斷服務(wù)器是否開(kāi)通了該端口號(hào)的監(jiān)聽(tīng),這里我將默認(rèn)端口號(hào)改成9190) //加入9190端口的監(jiān)聽(tīng) vim /etc/sysconfig/iptables
查看是否監(jiān)聽(tīng)端口(如果配置了自己定義的端口,需要先訪問(wèn)該端口一次才能看到監(jiān)聽(tīng))
netstat -ntlp
//重啟防火墻配置(不重啟端口還是無(wú)法生效)
service iptables restart
//修改端口號(hào)
vim /opt/nexus-3.13.0-01/etc/nexus-default.properties
//重啟Nexus
/opt/nexus-3.13.0-01/bin/nexus restart
Nexus其他命令
//停止
nexus stop
//查看狀態(tài)
nexus status
默認(rèn)登錄用戶名密碼
admin
admin-123
卸載
rm -rf nexus-3.13刪除掉安裝目錄即可
//可以看到Nexus在瀏覽器中可以打開(kāi)界面,部署成功,如下圖
復(fù)制代碼
配置jenkins,maven更新到Nexus私服 修改Jenkins服務(wù)器上的Maven的settings.xml文件(路徑是Maven安裝路徑 /opt/apache-maven-3.5.4/conf/),加入maven訪問(wèn)nexus認(rèn)證,訪問(wèn)Nexus的帳號(hào)密碼為上面登錄nexus的默認(rèn)登錄用戶名密碼
maven 項(xiàng)目pom文件配置私服倉(cāng)庫(kù)nexuslocal nexushttp://xxxxx:9190/repository/maven-public/truenexuslocal nexushttp://xxxxx:9190/repository/maven-public/truefalse復(fù)制代碼 Nexus 默認(rèn)的三種類(lèi)型倉(cāng)庫(kù),創(chuàng)建倉(cāng)庫(kù)的時(shí)候可以選擇這三種 1.group(倉(cāng)庫(kù)組類(lèi)型):又叫組倉(cāng)庫(kù),用于方便開(kāi)發(fā)人員自己設(shè)定的倉(cāng)庫(kù);
2.hosted(宿主類(lèi)型):內(nèi)部項(xiàng)目的發(fā)布倉(cāng)庫(kù)(內(nèi)部開(kāi)發(fā)人員,發(fā)布上去存放的倉(cāng)庫(kù))
3.proxy(代理類(lèi)型):從遠(yuǎn)程中央倉(cāng)庫(kù)中尋找數(shù)據(jù)的倉(cāng)庫(kù)(可以點(diǎn)擊對(duì)應(yīng)的倉(cāng)庫(kù)的 Configuration 頁(yè)簽下 Remote Storage Location 屬性的值即被代理的遠(yuǎn)程倉(cāng)庫(kù)的路徑)
復(fù)制代碼
proxy(代理類(lèi)型) 這里就是代理的意思,代理遠(yuǎn)程中央 Maven 倉(cāng)庫(kù),當(dāng) 項(xiàng)目構(gòu)建訪問(wèn)中央庫(kù)的時(shí)候,先通過(guò)代理去遠(yuǎn)程中央倉(cāng)庫(kù)下載依賴包到Nexus 倉(cāng)庫(kù),然后再?gòu)腘exus倉(cāng)庫(kù)下載到本地。私服我們部署在內(nèi)網(wǎng)服務(wù)器,只要其中一個(gè)人從遠(yuǎn)程中央庫(kù)下來(lái)了,以后相同的依賴包就都是從Nexus私服上進(jìn)行下載,這樣大大加快下載速度,不怕遠(yuǎn)程中央倉(cāng)庫(kù)出現(xiàn)問(wèn)題。
hosted(宿主類(lèi)型) 創(chuàng)建布和代理方式創(chuàng)建差不多 Hosted 是宿主機(jī)的意思,就是怎么把第三方的 Jar 放到私服上。Hosted 有三種方式,Releases、SNAPSHOT、Mixed group(倉(cāng)庫(kù)組類(lèi)型) 將其他倉(cāng)庫(kù)類(lèi)型合并一起(maven public就是group類(lèi)型),如圖所示將其他倉(cāng)庫(kù)合在一下提供對(duì)外使用
倉(cāng)庫(kù)屬性說(shuō)明 maven-central:maven中央庫(kù),默認(rèn)從https://repo1.maven.org/maven2/拉取jar maven-releases:私庫(kù)發(fā)行版jar maven-snapshots:私庫(kù)快照(調(diào)試版本)jar maven-public:倉(cāng)庫(kù)分組,把上面三個(gè)倉(cāng)庫(kù)組合在一起對(duì)外提供服務(wù),在本地maven基礎(chǔ)配置settings.xml中使用。Nexus jar 包上傳與刪除 上傳jar包 如果我們使用的遠(yuǎn)程maven中心庫(kù)有jar包無(wú)法下載,或者是我們自己編譯好的jar包提供給公司其他人,則可以將本地jar包上傳到私服倉(cāng)庫(kù)
私服jar刪除 私服jar出現(xiàn)問(wèn)題,我們也可以刪除私服的jar包重新下載或自行上傳
到此,Nexus搭建Maven私服服務(wù)已經(jīng)完成.
作者:maoqitian 鏈接:https://juejin.cn/post/6844903879910359047 來(lái)源:稀土掘金 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
關(guān)注公眾號(hào)【Java技術(shù)江湖】后回復(fù)“PDF”即可領(lǐng)取200+頁(yè)的《Java工程師面試指南》
強(qiáng)烈推薦,幾乎涵蓋所有Java工程師必知必會(huì)的知識(shí)點(diǎn),不管是復(fù)習(xí)還是面試,都很實(shí)用。

