Maven私服的搭建
一、什么是nexus?
- Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问
- Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来说,仓库只有两种:本地仓库和远程仓库。
- Nexus只是Maven仓库之一
- Maven工作流程
二、 为什么要使用nexus?
- 我们可以把自己制作的jar包存放至nexus 供其他小伙伴使用
- 他提供了强大的仓库管理功能
- 加速Maven构建 构建项目时Maven会不停的请求外部仓库,非常的耗时。利用私服:Maven只检查局域网中的数据以提高构建速度
三、Docker中搭建Nexus
环境要求
-
有
docker
环境 -
有
docker-compose
环境
1. 找一个合适的位置存放nexus
root@yufire:/usr/local/docker# mkdir nexus
root@yufire:/usr/local/docker/nexus# ls
root@yufire:/usr/local/docker/nexus#
2. 编写docker-compose文件
vi docker-compose.yml
docker-compose.yml
version: '3.5'
services:
nexus:
restart: always
image: sonatype/nexus3:3.23.0 # nexus版本
container_name: nexus # 容器名称
environment: # 环境变量
INSTALL4J_ADD_VM_PARAMS: -XX:ActiveProcessorCount=4
ports: # 映射的端口
- 80:8081
volumes: # 数据卷
- ./data:/nexus-data
- 设置的环境变量意思为机器的 CPU核心数 如果部署Nexus的机器CPU核心数不足4核的话 Nexus会有一个警告
创建数据文件夹
mkdir data # data要与 volumes里的data对应
chmod 777 data # 赋予权限 否则nexus启动可能报错
运行docker-compose
docker-compose up -d # -d 为守护态运行(后台运行)
Creating network "nexus_default" with the default driver # 创建了一个名称为 nexus_default的网络
Pulling nexus (sonatype/nexus3:3.23.0)... # 拉取 nexus镜像
3.23.0: Pulling from sonatype/nexus3
78afc5364ad2: Pull complete
58e1deb9693d: Pull complete
138a5c9bc330: Pull complete
a9af31a2240a: Pull complete
Digest: sha256:cb51454c5951f1330bfc6a8315b6a2b332f6292dbecee67b3e5a6d9ea4945ee9
Status: Downloaded newer image for sonatype/nexus3:3.23.0
Creating nexus ... done # 创建容器完成
- 等待docker的镜像下载完毕
以上成功了之后 查看docker运行状况
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68609501ea22 sonatype/nexus3:3.23.0 "sh -c ${SONATYPE_DI…" About a minute ago Up About a minute 0.0.0.0:80->8081/tcp nexus
确定启动成功了之后 访问nexus的地址
四、Windows中搭建Nexus
- 待更新
五、配置 Nexus私服
Docker查看Nexus初始密码
打开 data文件夹中的 admin.password文件查看密码
root@yufire:/usr/local/docker/nexus# pwd
/usr/local/docker/nexus
root@yufire:/usr/local/docker/nexus# ls
data docker-compose.yml
root@yufire:/usr/local/docker/nexus# cd data/ # 进入data目录
root@yufire:/usr/local/docker/nexus/data# ls 查看data中的文件
admin.password blobs cache db elasticsearch etc generated-bundles instances karaf.pid keystores lock log orient port restore-from-backup tmp
root@yufire:/usr/local/docker/nexus/data# cat admin.password 查看 初始密码
d85f05a9-861f-4b60-b7ee-5e7d9f83e9f6 # 复制初始密码 登陆
Windows查看Nexus初始密码
第一次登陆成功之后
- 点击 Next
- 重新设置密码
- 配置匿名访问
匿名访问
- 即访问该仓库时必须设置密码 否则禁止访问
- 配置密码可在 Maven配置文件中进行配置
配置仓库
设置 -> Repositories -> Create repository
找到 maven2(proxy)
填写仓库信息
- 设置仓库名称
- 设置仓库路径
- 其他默认就好
- 下拉找到
Create repository
按钮 点击即可完成创建
创建完成回到仓库列表
在 maven-public中配置aliyun仓库
- 直接拖动 aliyun-nexus到右边第一个的位置
- 注意先后顺序!
点击 Save按钮保存即可
六、在项目中使用Nexus
**找到Maven配置文件的 servers 节点 并配置 认证信息 **
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>123123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123123</password>
</server>
</servers>
Snapshots 与 Releases 的区别
- nexus-releases: 用于发布 Release 版本
- nexus-snapshots: 用于发布 Snapshot 版本(快照版)
项目中配置
打开 pom.xml 添加以下信息
<distributionManagement>
<repository>
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- 这边的id 要与 Maven 配置文件中Nexus认证信息的 id 一致
- 项目版本号中有
SNAPSHOT
标识的,会发布到 Nexus Snapshots Repository, 否则发布到 Nexus Release Repository,并根据 ID 去匹配授权账号。
发布项目到Nexus私服
maven deploy
七、附
1. 上传第三方 JAR 包
Nexus 3.0 不支持页面上传,可使用 maven 命令:
# 如第三方JAR包:aliyun-sdk-oss-2.2.3.jar
mvn deploy:deploy-file
-DgroupId=com.aliyun.oss
-DartifactId=aliyun-sdk-oss
-Dversion=2.2.3
-Dpackaging=jar
-Dfile=D:\aliyun-sdk-oss-2.2.3.jar
-Durl=http://127.0.0.1:8081/repository/maven-3rd/
-DrepositoryId=nexus-releases
-DrepositoryId=nexus-releases
对应的是settings.xml
中 Servers 配置的 ID 名称。(授权)
2. Maven配置
传送门 Maven配置
完结
- 部分转载于 撸帝 的文章
作者:yufire © yufirem@vip.qq.com