Skip to main content

Docker搭建Maven私服

· 4 min read
Zeffon Wu

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。

前言

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。 Maven 私服应用场景 :

  1. 缓存企业级 jar
  2. 微服务开发中,实现对微服务接口实现发布与调用。
  3. 正常在微服务开发中,不会直接引入到其他接口源码项目。引入接口 jar 包进行调用。

流程

下载&&启动

  1. Docker 拉取一个nexus3的镜像
$ docker pull sonatype/nexus3
  1. 将容器内部/var/nexus-data挂载到主机/root/nexus-data目录
$ docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
  1. 关闭防火墙,根据服务器ip访问 http://ip:8081
$ systemctl stop firewalld.service

Maven 私服启动容器稍微比较慢,等待 1 分钟即可。

登陆

使用默认账号密码 admin admin123 登陆时,发现登陆不了。这是更改这种 admin123固定密码登陆方式。需要进入容器里面寻找密码。

  1. 查看进行的容器,并进入容器
$ docker ps
CONTAINER ID IMAGE
9c9b18024931 sonatype/nexus3
$ docker exec -it 9c9b18024931 bash
  1. 查看密码(bash-4.4$前面的字符串即是密码)
bash-4.4$ cat /nexus-data/admin.password
3rhu2s4g-34d5-34d5-fs9d-we2fh8242wh3bash-4.4$
#退出容器用 exit 命令
  1. 在登陆界面进行登陆,再根据提示重置密码即可

创建 Maven 私服仓库

  1. 创建私服仓库 创建仓库,点击Create repository,然后选择maven2(hosted)然后输入仓库名称(test-release)。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy(这个很重要).
  2. 创建私服账号 点击左侧菜单栏的Users菜单,然后点击Create local user.我这里创建了一个用户,账号密码都是:testUsertestUser-release
  3. 修改本地 settings.xml```xmltestUsertestUsertestUser

4. 创建一个Maven工程



> **`注意`** 限定版本一定为RELEASE,因为上传的对应仓库的存储类型为`RELEASE`



    <!--指定仓库地址 -->
<distributionManagement>
<repository>
<!--此名称要和.m2/settings.xml中设置的ID一致 -->
<id>testUser</id>
<url>http://192.168.162.22:8081/repository/testUser-release/</url>
</repository>
</distributionManagement>

<build>
<plugins>
<!--发布代码Jar插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
<!--发布源码插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>


1. 发布`jar包`到Maven私服



```sh
$ mvn deploy

参考文献

Nexus3 Docker