Docker安装Nexus搭建Maven私服及介绍


前言

搭建私有maven仓库适合在协同工作时,如:A项目是公司的工具包,B项目中会引入A install后形成的jar包,但是其他同事本地运行也要和你一样的操作吗?到线上运行也要一样的操作吗?所以,这类型产生的jar包需要一个统一的地方来进行管理,只需把A的jar包部署推送到私有maven仓库中,B项目在pom文件中引入依赖即可。


一、Nexus是什么?

官网:https://help.sonatype.com/repomanager3
Nexus是一款非常流行的仓库管理系统,用于管理和分发各种软件包、依赖项、构建工件等。它是一个基于Java的开源软件,最初由Sonatype开发,并在Apache许可证下发布。在软件开发中,通常需要使用大量的代码库和第三方依赖项,这些依赖项可能来自不同的来源。Nexus可以帮助开发人员在一个统一的地方管理所有的依赖项,使得项目开发的过程更加高效和规范化。

二、Docker安装方式

1. 拉取镜像

docker pull sonatype/nexus3:latest

2. 创建挂载目录

mkdir /data/nexus-data
chown -R 200 /data/nexus-data

3. 运行

docker run -d -p 8081:8081 --name nexus \
--restart=always \
-e INSTALL4J_ADD_VM_PARAMS="-Xms512m -Xmx512m \
-XX:MaxDirectMemorySize=1200m" \
-v /data/nexus-data:/nexus-data sonatype/nexus3

4. 容器运行日志 (可选)

# -f 实时追加最新日志
# --tail=N 查看日志的最后 N 行

docker logs -f --tail=100 nexus

启动成功后,浏览器ip+端口访问即进入主页面:

三、用户登录

nexus3的账号是:admin

密码要去挂载的目录查看一个叫admin.password的文件,里面放的就是admin的登录密码。

cd /data/nexus-data

查看密码
cat admin.password

登进去了,根据提示改改密码就可以正常使用了。

四、仓库介绍

在这里插入图片描述

nexus仓库分三种类型:

  1. proxy 代理仓库,比如代理到maven中央仓库。
  2. hosted 宿主仓库,即自己的私人仓库。
  3. group 仓库组,由多个仓库组成,当要下载依赖时会遍历每个仓库去找。

其中,hosted 宿主仓库又分为:releases 和shapshots,分别表示依赖的版本的发行版、快照版。快照版依赖不能上传到发行版仓库,反之亦然。nexus做了限制。

仓库格式有两种:

  1. maven2(关注)
  2. nuget

默认的group仓库组把central、releases 和shapshots这三个仓库都放进去了
在这里插入图片描述

五、创建代理仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

https://maven.aliyun.com/nexus/content/groups/public

六、上传依赖(重点)

1、先配置本地maven的setting.xml

<servers>
  <!-- 这是配置访问私有仓库的用户名密码 -->
  <server>
    <!-- id标签可以随便填,唯一即可 -->
    <id>opals-maven</id>
    <username>dev</username>
    <password>dev</password>
  </server>
</servers>

2、在需要上传的模块pom.xml配置中添加

<distributionManagement>
   <repository>
       <id>opals-maven</id>
       <url>http://ip:port/repository/maven-releases/</url>
   </repository>
   <snapshotRepository>
       <id>opals-maven</id>
       <url>http://ip:port/repository/maven-snapshots/</url>
   </snapshotRepository>
</distributionManagement>

repository 标签是代表上传release版本
snapshotRepository 标签代表上传snapshot版本

  • nexus会根据该模块的版本进行自动选择,如果你的版本号带有SNAPSHOT如:<version>1.0.0-SNAPSHOT</version>,那么会上传到SNAPSHOT仓库,release同理,如果版本号不存在这两个单词,如<version>1.0.0</version>,那么会选择release仓库上传。
  • id,就是上面配置的server id,nexus会通过这个id去server中拿用户名密码去访问私服仓库。
  • url,就是对应仓库的地址:仓库的url复制即可,注意对应仓库

在这里插入图片描述

在这里插入图片描述

注意

在这里插入图片描述

设置为Allow redeploy代表允许我们对仓库中的依赖维护升级新版本,如果设置为disable redeploy意味着我们无法将升级版本上传。

七、下载依赖

1、配置本地maven,打开setting.xml,找到mirrors标签。

然后添加一个mirror标签:

<mirrors>
	<mirror>
	    <id>opals-maven</id>
	    <mirrorOf>*</mirrorOf>
	    <url>`仓库组`的url/</url>
	</mirror>
	
	<mirror>
	    <id>nexus-aliyun</id>
	    <mirrorOf>central</mirrorOf>
	    <name>Nexus aliyun</name>
	    <url>https://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
</mirrors>

在这里插入图片描述


常见问题

1、如何把新建的仓库添加到组?

在这里插入图片描述
在这里插入图片描述

2、Nexus代理仓库状态是什么意思?

online-remote available 表示该被代理仓库可用

online-ready to connect 表示还没有一个依赖去访问这个被代理仓库,nexus不知道这个被代理仓库能不能用,所以它只能展示为待连接状态:

3、推送到Nexus提示405,是什么问题?

Return code is: 405, ReasonPhrase: PUT.

检查pom文件中的<id></id><url></url>配置是否正确,确保是部署到hosted而不是group
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45549188/article/details/130213190