熱門:DevOps實戰系列【第三章】:詳解Maven倉庫及環境搭建

2023-01-08 12:17:33 來源:51CTO博客

個人親自錄制全套DevOps系列實戰教程:??手把手教你玩轉DevOps全棧技術??


(資料圖片僅供參考)

Maven私有倉庫,就不多說了,我們這里選用最新的Nexus3的3.17版本,平時公司使用的都是Nexus 2.x,新的3.x版本做了很多的升級,包括存儲方式等,

這里選用新版本的一個原因就是也想了解下新版本的變化。

參考官網:??https://help.sonatype.com/repomanager3/installation-and-upgrades/installation-methods??

拉取鏡像

# 此處我們選擇3.17版本,因為3.18版本采用的是red hat,3.18之前是centosdocker pull sonatype/nexus3:3.17.0

運行容器

??注意:??宿主機需提前創建/docker/nexus3/data目錄,用于和容器的數據目錄進行映射,

# 值得注意的是nexus3容器內會使用200這個用戶去執行操作# 所以/docker/nexus3/data需要給200授權,為了方便我使用的是777權限。chmod -R 777 /docker/nexus3/data
# 在/docker/nexus3目錄創建vi docker-compose.ymlversion: "3"services:  nexus3:    image: "sonatype/nexus3:3.17.0"    restart: always    container_name: "nexus3"    hostname: "nexus3"    environment:      - NEXUS_CONTEXT=nexus # 默認不指定上下文為根/,這是和nexus2不同的地方    ports:      - "9081:8081"    networks:      - "exist-net-bloom"    volumes:      - "/docker/nexus3/data:/nexus-data"      - "/etc/timezone:/etc/timezone:ro"      - "/etc/localtime:/etc/localtime:ro"networks:  exist-net-bloom:    external:      name: devops

查看密碼:進入容器的cat /nexus-data/admin.password文件中查看。

# 入口:# http://10.10.1.199:9081/nexus/  # 注意如果去掉NEXUS_CONTEXT=nexus的設置,入口就是http://10.10.1.199:9081/用戶名:admin

Nexus 倉庫類型

hosted:maven-releases、maven-snapshots,接收客戶端提交過來的依賴包(jar包,mvn deploy),也可從中心庫下載依賴包。在2.x老版本中還會有一個3th party庫,用來從第三方獲取jar包然后上傳到該庫中管理。proxy:maven-central,正常客戶端下載依賴包順序,優先查找hosted庫是否存在,不存在則通過proxy庫到中心庫查找并下載保存到本地倉庫。group:maven-public,這個倉庫就是前兩個的匯總,它包含所有倉庫的依賴包。

本地全局settings.xml配置

  /mvnrepo/repo        distributionManagement->repository->id相匹配 -- >            nexus3        admin        123456                    omv-releases        admin        123456                omv-snapshots        admin        123456                  omv-profile                              omv-central          http://10.10.1.199:9081/nexus/repository/maven-public/          true          true                                                             aliyun          aliyun Repository          https://maven.aliyun.com/repository/public                                false                                                      omv-central-plugin          http://10.10.1.199:9081/nexus/repository/maven-public/          true          true                              omv-profile                      指定的的id對應的倉庫,就是如果要訪問屏蔽的倉庫,會被重定向到url指向的倉庫 -- >            omv-mirror      central      https://maven.aliyun.com/repository/public      

??關于中心倉庫:??通過鏡像方式重定向中心倉庫只是其中是一種方式,也可以在nexus的web頁面,直接將maven-central這個代理倉庫代理的中心倉庫改成我們期望的倉庫。

比如還可以在nexus中增加一個proxy的maven-cental,讓他直接代理阿里云倉庫,這樣上邊的鏡像到的url就可以直接使用自己的私服nexus地址了。

項目pom.xml文件設置

settings.xml中定義了拉取依賴的庫(私服和阿里云),那下邊我們來定義通過maven打包后部署jar包到哪個庫的配置,即怎么向nexus上傳分發。

        xxx-RELEASE的包都會上傳到release庫 -- >          omv-releases      Releases      http://10.10.1.199:9081/nexus/repository/maven-releases/                      omv-snapshots      Snapshot      http://10.10.1.199:9081/nexus/repository/maven-snapshots/      ,id要和這里的id一致 -- >

問題:當我們打包deploy時會報權限問題答案:因為nexus設置了鑒權,所以需要授權,授權需要settings.xml中配置,id要和這里的id一致

關于一個異常

關于loger error:通過nexus的日志,我們發現有一個ssl的請求超時,他是去訪問國外網站了,鑒于這個功能我們不使用,所以直接屏蔽掉

路徑:admin登錄->System->Capabilities->Outreach: Management->Disable

根據官方文檔描述這是一個從倉庫對外提供數據的插件,因為nexus3升級后不只是maven倉庫還可以做其他倉庫,比如docker,而這個功能看上去和maven沒什么關系。

標簽: 原因就是 客戶端下載

上一篇:DevOps實戰系列【第四章】:詳解Jenkins搭建及使用
下一篇:前端三個實用小妙招分享給大家