背景
- 純內(nèi)網(wǎng)環(huán)境,無(wú)法連互聯(lián)網(wǎng)
- 待初始化maven私服在內(nèi)網(wǎng),無(wú)法通過(guò)配置代理完成初始化
- 通過(guò)nexus部署私服,初始化maven依賴和npm依賴
初始化思路
- 通過(guò)nexus管理端上傳組件功能上傳組件,支持maven組件和npm組件
- 通過(guò)maven插件命令行指令上傳組件,僅能上傳maven組件
- 通過(guò)nexus的api接口上傳組件,支持maven組件和npm組件
其中前兩個(gè)思路適用于少量組件需要上傳的情況,若需要上傳的組件成百上千個(gè),則建議要么想辦法打通網(wǎng)絡(luò)通過(guò)網(wǎng)絡(luò)初始化,要么使用程序循通過(guò)api批量上傳。
通過(guò) nexus 管理端功能上傳組件
使用有權(quán)限的賬戶登錄 nexus 后在倉(cāng)庫(kù)頁(yè)的左側(cè)菜單里選擇【Upload】功能上傳組件,無(wú)論是maven組件還是npm組件只能上傳到 hosted 類型的倉(cāng)庫(kù)中。
1、maven組件可上傳的文件有jar、pom
2、npm組件可上傳的文件是 tgz 文件
3、這個(gè)功能僅支持上傳 Release 版本的依賴,nexus3 會(huì)根據(jù)上傳文件的版本判斷是否符合要求,比如版本號(hào)帶有 SNAPSHOT 標(biāo)識(shí),則認(rèn)為是快照版,不允許上傳
上傳maven依賴
1、同時(shí)上傳 jar 和 pom 文件
分別瀏覽兩個(gè)文件,點(diǎn)擊 Browse 按鈕,分別選擇要上傳的 jar 和 pom文件,當(dāng) pom 文件選擇完之后,Component coordinates 區(qū)域會(huì)自動(dòng)取消(即此時(shí) nexus 自動(dòng)從 pom 文件中提取相關(guān)內(nèi)容)。
2、僅上傳 pom 文件
當(dāng)需要上傳的是類似父模塊的時(shí)候,這種情況不存在 jar,只有 pom 文件,選中 pom 后,Components coordinates 區(qū)域同樣會(huì)自動(dòng)取消。
3、僅上傳 jar 文件
當(dāng)僅上傳 jar 文件時(shí),需要填寫 Components coordinates 對(duì)應(yīng)的信息,即 Group ID、Artifact ID、Version,這種情況基本遇不到。
命令行通過(guò) maven 命令上傳
1、在 maven 配置文件中配置具有上傳權(quán)限的用戶信息,也可以給匿名用戶臨時(shí)賦管理員權(quán)限(這有風(fēng)險(xiǎn),萬(wàn)一用完后忘了收回呢)
2、確保maven依賴的插件在本地倉(cāng)庫(kù)里是存在的,否則命令無(wú)法正常執(zhí)行
在settings.xml中配置用戶信息,用戶名密碼根據(jù)實(shí)際情況配置
<servers>
<server>
<id>local-nexus3</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
注意:若需要上傳的 jar 、pom 文件在本地倉(cāng)庫(kù)里,先將文件從本地倉(cāng)庫(kù)復(fù)制到其他目錄,否則會(huì)上傳失敗
1、同時(shí)上傳 jar 和 pom
mvn -s /path/to/settings.xml deploy:deploy-file -Durl=http://localhost:8080/repository/maven-snapshots -DrepositoryId=local-nexus3 -Dfile=XXX.jar -DpomFile=XXX.pom
-s:指定maven使用的配置文件
-Durl:maven 倉(cāng)庫(kù)地址,注意倉(cāng)庫(kù)類型 Release、Snapshot、Mixed
-Dfile:要上傳的jar文件
-DpomFile:與jar文件對(duì)應(yīng)的pom文件
-DrepositoryId:倉(cāng)庫(kù)id,給maven工具使用的,主要是用來(lái)獲取上邊 server 里配置的用戶信息,這個(gè)值要跟 server 里配置的 id 里的值一樣
2、僅上傳 pom
mvn -s /path/to/settings.xml deploy:deploy-file -Durl=http://localhost:8080/repository/maven-snapshots -DrepositoryId=local-nexus3 -Dfile=XXX.pom -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.0.0-SHAPSHOT -Dpackaging=pom
--Dfile為對(duì)應(yīng)的pom文件
groupId、artifactId、packaging、version的值從pom文件中復(fù)制
3、僅上傳 jar
mvn -s /path/to/settings.xml deploy:deploy-file -Durl=http://localhost:8080/repository/maven-snapshots -DrepositoryId=local-nexus3 -Dfile=XXX.jar -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.0.0 -Dpackaging=jar
若上傳失敗,可以增加 -e 和 -X 參數(shù),查看輸出的日志信息,一般是因?yàn)槿鄙?maven 依賴
通過(guò)rest api接口上傳
api接口文檔在:管理員賬號(hào)登錄--》設(shè)置--》System--》API,組件相關(guān)接口查看Components 里的內(nèi)容
自己通過(guò)程序循環(huán)調(diào)用 api 接口將依賴上傳至 nexus 私服。
注意上傳權(quán)限問(wèn)題,在http請(qǐng)求頭里設(shè)置Authorization:Basic[空格][用戶名:密碼對(duì)應(yīng)的base64編碼字符串],比如admin:admin123對(duì)應(yīng)為YWRtaW46YWRtaW4xMjM=
注意:調(diào)用api實(shí)際使用時(shí)不能用admin:admin123去做認(rèn)證,因?yàn)閚exus認(rèn)為admin123是admin的默認(rèn)密碼,默認(rèn)密碼驗(yàn)證會(huì)不通過(guò)。
附:上傳程序:
https://pan.baidu.com/s/1kJExCa974xk_wkqYXFgd9w?pwd=akc2
1、上傳程序里的日志文件要先創(chuàng)建
2、權(quán)限認(rèn)證字符串根據(jù)實(shí)際調(diào)整
參考:
- nexus3:https://help.sonatype.com/docs
- maven deploy插件:https://maven.Apache.org/plugins/maven-deploy-plugin/usage.html
- 前端依賴離線下載:https://github.com/Meir017/node-tgz-downloader
歡迎交流、指正。