热门: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搭建及使用
下一篇:前端三个实用小妙招分享给大家