Windows環(huán)境搭建Maven私有倉(cāng)庫(kù)
一:Nexus概述
我們?cè)谥vNexus之前,先來(lái)看個(gè)問(wèn)題腥椒,為什么要搭建 Maven 私有倉(cāng)庫(kù)阿宅?不管是做開(kāi)發(fā)還是測(cè)試,我們項(xiàng)目中都會(huì)涉及到一些私有的 jar包笼蛛,何為私有的 jar 包洒放,就是我們自己打包的一個(gè) jar文件,無(wú)法從Maven下載的滨砍,如果這個(gè)項(xiàng)目只有一個(gè)人在使用往湿,那么可以直接使用這個(gè) jar 包妖异,但是如果有多人使用呢,難道要一個(gè)一個(gè) copy 給他們嗎领追,就算 copy 了他膳,在項(xiàng)目中也不見(jiàn)得會(huì)正常使用,代碼中肯定會(huì)報(bào) jar 包缺失绒窑,這種報(bào)錯(cuò)非常常見(jiàn)棕孙。
其次,所有人重復(fù)的從 Maven 倉(cāng)庫(kù)下載 jar 包些膨,浪費(fèi)了大量的外網(wǎng)帶寬蟀俊,如果公司網(wǎng)絡(luò)慢,那么下載耗時(shí)會(huì)非常大傀蓉,那種痛苦估計(jì)只有經(jīng)歷過(guò)的人才會(huì)知道欧漱,影響工作效率和項(xiàng)目進(jìn)度,常用方法就是將這個(gè) jar 包放到私有倉(cāng)庫(kù)葬燎,在 maven 中配置好私有倉(cāng)庫(kù)地址误甚,在 pom.xml 中配置好 jar 包相關(guān)信息,就可以下載到本地了谱净,使用這個(gè) jar了窑邦。那么如何搭建 Maven 私有倉(cāng)庫(kù)呢,我們就要使用 Nexus壕探。
Nexus是一個(gè)強(qiáng)大的maven倉(cāng)庫(kù)管理器,它極大的簡(jiǎn)化了本地內(nèi)部倉(cāng)庫(kù)的維護(hù)和外部倉(cāng)庫(kù)的訪問(wèn)冈钦;是一套開(kāi)箱即用的系統(tǒng)不需要數(shù)據(jù)庫(kù),它使用文件系統(tǒng)加Lucene來(lái)組織數(shù)據(jù);使用ExtJS來(lái)開(kāi)發(fā)界面,利用Restlet來(lái)提供完整的REST APIs,通過(guò)IDEA和Eclipse集成使用李请;支持webDAV與LDAP安全身份認(rèn)證瞧筛;提供了強(qiáng)大的倉(cāng)庫(kù)管理功能,構(gòu)件搜索功能,它基于REST,友好的UI是一個(gè)extjs的REST客戶端,占用較少的內(nèi)存,基于簡(jiǎn)單文件系統(tǒng)而非數(shù)據(jù)庫(kù)。
二:Nexus 的優(yōu)點(diǎn)
1.加速 Maven 構(gòu)建過(guò)程导盅,提高工作效率
2.節(jié)省大量的外網(wǎng)帶寬
3.方便公司內(nèi)部人員使用
三:工作流程
四:Nexus 倉(cāng)庫(kù)類型說(shuō)明
hosted:本地存儲(chǔ)较幌。像官方倉(cāng)庫(kù)一樣提供本地私庫(kù)功能 proxy:提供代理其它倉(cāng)庫(kù)的類型 group:組類型,能夠組合多個(gè)倉(cāng)庫(kù)為一個(gè)地址提供服務(wù)
五:Nexus 下載
1.官網(wǎng):https://www.sonatype.com/
2.下載地址
Nexus提供了免費(fèi)版本和收費(fèi)版本白翻,如上圖所示乍炉,OSS 為免費(fèi)版本,PRO為收費(fèi)版本滤馍。
點(diǎn)擊Nexus Repository OSS岛琼,點(diǎn)擊 GET REPOSITORY OSS
輸入郵箱(隨便輸入),選擇 I don't know巢株,點(diǎn)擊 DOWNLOAD
隨意填寫(xiě)相關(guān)數(shù)據(jù)槐瑞,點(diǎn)擊DOWNLOAD
根據(jù)你的操作系統(tǒng),選擇下載即可阁苞,這里選擇 WINDOWS
注:由于網(wǎng)絡(luò)限制随珠,需要借助梯子才可以正常訪問(wèn) Nexus 官網(wǎng)及軟件下載灭袁,因此,Nexus 安裝包會(huì)放到百度網(wǎng)盤窗看,有需要的小伙伴可以在公眾號(hào)內(nèi)回復(fù)“nexus”獲取
六:安裝
1.將下載好的nexus-3.31.1-01-win64.zip解壓
nexus-3.31.1-01:nexus 安裝目錄
sonatype-work:nexus 數(shù)據(jù)文檔
2.nexus-3.31.1-01 目錄說(shuō)明
bin 包含nexus的啟動(dòng)腳本和相關(guān)配置 etc jetty茸歧、karaf等配置文件 jre jre環(huán)境 lib java架包庫(kù) public 關(guān)于nexus應(yīng)用在本地跑起來(lái)所需要的資源 system 應(yīng)用所有的插件和組件
3.sonatype-work\nexus3目錄說(shuō)明
blobs 創(chuàng)建blob的默認(rèn)路徑,當(dāng)然也可以重新指定 cache 當(dāng)前緩存的karaf包的信息 db OrientDB數(shù)據(jù)庫(kù)的數(shù)據(jù)显沈,用于存儲(chǔ)nexus的元數(shù)據(jù)的數(shù)據(jù)庫(kù) elasticsearch 當(dāng)前配置的Elasticsearch狀態(tài) etc 大概是運(yùn)行時(shí)配置狀態(tài)和關(guān)于資源庫(kù)的自定義的相關(guān)的東西 keystores 自動(dòng)生成的關(guān)于資源庫(kù)的ID主鍵 log 運(yùn)行實(shí)例生成的日志文件软瞎,也有日志文件的壓縮包,貌似是每天都會(huì)生成日志文件拉讯,你可以定期刪除老的日志文件 tmp 用于存儲(chǔ)臨時(shí)文件的目錄
官方詳細(xì)說(shuō)明:https://help.sonatype.com/repomanager3/installation/directories
2.啟動(dòng)方式一
在D:\Program Files\nexus-3.31.1-01-win64\nexus-3.31.1-01\bin目錄下涤浇,在PowerShell窗口輸入 .\nexus.exe /run,Cmd 命令行也可魔慷。
當(dāng)然如果你不想每次都進(jìn)入 bin 目錄下執(zhí)行 .\nexus.exe /run只锭,你需要將 bin 目錄設(shè)置為環(huán)境變量,這樣就可以在隨意路徑下執(zhí)行該命令了院尔。
啟動(dòng)后瀏覽器輸入:127.0.0.1:8081
2.啟動(dòng)方式二
創(chuàng)建并注冊(cè)為 Windows 服務(wù)蜻展,以 Windows 服務(wù)的方式啟動(dòng)和停止:nexus.exe /install <optional-service-name>
如果出現(xiàn)以上報(bào)錯(cuò),我們用管理員身份打開(kāi) PowerShell邀摆,再次輸入 nexus.exe /install nexus-service
我們打開(kāi) Windows 服務(wù)纵顾,查看是否創(chuàng)建成功,Windows 服務(wù)中存在 nexus-services栋盹,說(shuō)明我們已經(jīng)創(chuàng)建成功施逾,可以設(shè)置啟動(dòng)類型并啟動(dòng)或停止。
3.命令行管理服務(wù)
<pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="bash" cid="n59" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; background-position: inherit inherit; background-repeat: inherit inherit;"> nexus.exe /start <可選服務(wù)名稱>
nexus.exe /stop <可選服務(wù)名稱>
nexus.exe /uninstall <可選服務(wù)名稱></pre>
七:Nexus的使用
1.登錄例获,點(diǎn)擊 Sing in汉额,彈出密碼存放文件
2.如果你8081端口被占用,那么可以修改端口號(hào)
進(jìn)入D:\Program Files\nexus-3.31.1-01-win64\nexus-3.31.1-01\etc目錄榨汤,修改nexus-default.properties文件中的application-port值即可
<pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="properties" cid="n65" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; background-position: inherit inherit; background-repeat: inherit inherit;"> ## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
Jetty section
application-port=8081
application-host=0.0.0.0
nexus-args={jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
Nexus section
nexus-edition=nexus-pro-edition
nexus-features=
nexus-pro-feature
nexus.hazelcast.discovery.isEnabled=true</pre>
3.倉(cāng)庫(kù)說(shuō)明
3.上傳 jar包到 nexus
1.登錄后點(diǎn)擊 Upload,點(diǎn)擊 maven-releases
2.選擇文件闷愤,填寫(xiě) Group ID,Artiface ID,Version
3.點(diǎn)擊 Upload
3.查看已上傳的 jar
八:在項(xiàng)目中的使用
1.下載 Maven,在公眾號(hào)內(nèi)回復(fù) maven 下載
2.下載解壓后修改/config/settings.xml文件
<localRepository>D:\Program Files\apache-maven-3.8.1\mavenrepository</localRepository>
<mirrors> <mirror> <id>nexus</id> <name>internal nexus repository</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors>
3.idea 設(shè)置
4.pom.xml 配置依賴jar 包件余,以 testng.jar 為例
<dependency> <groupId>org.example</groupId> <artifactId>xml-transformation-html</artifactId> <version>1.0</version> </dependency>
5.執(zhí)行
點(diǎn)擊 idea 最右側(cè) Maven,點(diǎn)擊 Dowload Sources and Documentation 或者直接點(diǎn)擊刷新按鈕,可以看到已經(jīng)從 127.0.0.1 開(kāi)始下載依賴包了