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



