这里只是记录一下服务端的搭建及配置过程,客户端需要单独配置 maven 的 setting.xml 文件:Maven - 客户端 Nexus 配置
什么是 Nexus
Nexus 是一个强大的 Maven 私服仓库。现在已经不仅仅是 Maven 私服了,同时支持 docker、apt、bower、conda、go、helm、npm、pypi、yum 等依赖管理
为什么需要 Nexus
- 比如在内网环境中开发,或者网速比较慢的情况下,我们拉取项目依赖可以从私服拉取,私服去中央仓库拉取。当拉取依赖时,如果私服中没有,再去中央仓库中找,不需要每个开发人员都去中央仓库下载,只需要私服下载一次即可。
- 在项目多人协同开发中,比如我们开发了一个公共的工具类 jar 包,在多个项目组中都可以引用,我们又不希望把这个 jar 包推送到公共的 maven 仓库中,此时就需要私服来存储、分发我们的私有 jar 包。
部署 Nexus
version: "3.9"
services:
nexus:
image: sonatype/nexus3:latest
container_name: nexus
restart: always
volumes:
# 自定义数据卷位置为当前目录下的 data 目录
- ./data:/nexus-data
ports:
- "8081:8081"
注意: 启动时如果出现权限问题,可以使用
chmod 777 /usr/local/docker/nexus/data
赋予数据卷可读写权限
仓库介绍
代理仓库(proxy)
- 代理第三方仓库
- maven-central
- nuget.org-proxy
- 版本策略
- Release:正式版本
- Snapshot:快照版本
- Mixed:混合模式
- 布局策略
- strict:严格
- Permissive:宽松
宿主仓库(hosted)
- 存储本地上传的组件和资源
- maven-release
- maven-snapshot
- nuget-hosted
- 部署策略
- Allow Redeploy:允许重新部署
- Disable Redeploy:禁止重新部署
- Read-Only:只读
- 布局策略
- strict:严格
- Permissive:宽松
创建代理仓库
由于我们国内一般使用阿里云代理仓库,而且开发一般都会使用到 spring
框架,所以我们需要配置三个代理仓库:aliyun-nexus
、spring-milestone
、spring-snapshot
,配置过程如下:
在选择仓库页面选择:maven2(proxy)
- 配置阿里云仓库代理(版本策略为 Release)
- Name:
aliyun-nexux
- Version policy:
Release
- Remote storage:
http://maven.aliyun.com/nexus/content/groups/public
- Name:
- 配置 spring 的 Release 仓库
- Name:
spring-milestone
- Version policy:
Release
- Remote storage:
https://repo.spring.io/milestone
- Name:
- 配置 spring 的 Snapshot 仓库
- Name:
spring-snapshot
- Version policy:
Snapshot
- Remote storage:
https://repo.spring.io/snapshot
- Name:
配置分组仓库
通过配置 maven-public 分组仓库将上面几个代理仓库统一为一个仓库入口,同时调整顺序:
配置定时任务
这里我们配置一个自动删除快照版本的定时任务:
配置任务详情:
手动上传依赖
非开源项目可能没办法从中央仓库拉取项目,这时我们可以手动上传。
建议把第三方 jar 包单独归类于一个仓库中,便于维护和管理(maven-3rd)。
1、创建仓库 maven-3rd
2、选择上传仓库 maven-3rd
3、选择 jar 包、并填写 GAV 等信息
4、上传完成即可在仓库 maven-3rd
中看到对应的 jar 信息