文章目录
镜像拉取
docker pull sonatype/nexus3
构建nexus实例
- docker-compose up -d
yaml
version: '3'
services:
nexus:
image: sonatype/nexus3 # 使用的 Nexus 镜像
ports:
- "8081:8081" # 将容器的 8081 端口映射到宿主机的 8081 端口
volumes:
- nexus_data:/nexus-data # 挂载数据卷,用于持久化 Nexus 数据
restart: always # 容器停止后自动重启
networks:
- my_network # 加入自定义网络
networks:
my_network: # 自定义网络配置
volumes:
nexus_data: # 定义数据卷
driver: local # 使用本地驱动,数据存储在本地
-
docker run
docker run -d -p 8081:8081 --name nexus --privileged=true -v /root/nexus-data:/nexus-data --restart=always sonatype/nexus3
登录maven私服
关闭防火墙,访问
http://ip:8107
Maven私服启动容器稍微比较慢,等待一会即可。
注:账号为
admin
,密码在映射数据集下admin.password
文件里面
此案例使用docker-compose 创建实例
如何查看实例初始化的admin密码呢?
1.查看容器挂载卷
shell
docker volume ls
2.找到nexus_nexus_data查看挂载卷详情
shell
docker volume inspect nexus_nexus_data
3.查看admin账号密码
4.登录并重置密码
使用nexus私服
1.设置settings.xml
xml
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
2.设置idea pom
xml
<!--注意限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE -->
<!--指定仓库地址 -->
<distributionManagement>
<repository>
<!--此名称要和.m2/settings.xml中设置的ID一致 -->
<id>maven-releases</id>
<!--上传的位置-->
<url>http://192.168.33.101:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<!--此名称要和.m2/settings.xml中设置的ID一致 -->
<id>maven-snapshots</id>
<!--上传的位置-->
<url>http://192.168.33.101:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<!-- 将源码打包插件 -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- deploy时只上传jar包到远程仓库的配置 -->
<!--发布代码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>
打包编译成功(下面打的是一个 稳定版jar包)
nexus 私服
打包编译成功(下面打的是一个 快照jar包)
出现的问题
问题1:Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
- 大概率是settings.xml 和 pom 设置不对(主要)
- maven 版本过低 推荐
3.6.3
- nexus 仓库发布策略更改为
Allow redeploy
小插曲
1. idea 怎么打稳定版本和快照版本?
在Nexus仓库中,一个仓库一般分为public(RELEASE
)仓和SNAPSHOT
仓,前者存放正式版本
,后者存放快照版本
。如果在项目配置文件中(无论是build.gradle
还是pom.xml
)指定的版本号带有-SNAPSHOT
后缀,比如版本号为laowang-2.0-SNAPSHOT
,那么打出的包就是一个快照版本。
2. 为什么快照版本 后面带了一堆数字?
Maven 中的快照版本是一种特殊的版本,用于代表正在开发中的项目版本。在快照版本号后面的数字通常是一个时间戳或者一个递增的构建号。
快照版本的命名约定通常遵循以下格式:<version>-SNAPSHOT
。其中,<version>
是项目的基础版本号,而 -SNAPSHOT
则表示这是一个快照版本。在实际使用中,Maven 会将快照版本视为动态版本,它会定期检查仓库以获取最新的快照构建。
在快照版本号后面的数字通常是一个时间戳,用于标识构建的时间或者一个递增的构建号,用于表示每个快照构建的唯一性。这些数字有助于区分不同时间点或不同构建中的快照版本。
举例来说,一个快照版本号可能是 1.0-SNAPSHOT
,而后面的数字可能会是类似于 20231218-1345
(表示日期和时间)或者类似于 42
(表示递增的构建号)这样的格式。这些数字会随着每次快照构建而变化,确保每个快照版本在仓库中都是唯一的。