使用 Nexus 搭建 Maven 私有仓库
阅读提示:本文内容是基于 nexus-3.19.1-01 版本!!!
1. 什么是 Maven 私有仓库
在开发过程中,我们通常会使用Maven构建项目的依赖管理系统。Maven的仓库是用来存放各种软件库、框架和插件等资源的地方,它可以让我们方便地管理各种依赖,并且可以通过依赖关系自动下载所需的库文件,缩短编译部署时间,提高效率。
但是,对于企业内部开发者和团队而言,与外部库不同,他们可能需要创建一些定制的依赖项,如共享的基础框架、工具类、代码库等。这时,Maven 私有仓库就派上用场了。私有仓库是一种为开发者和团队提供内部库的机制,它可以使开发者更好地管理和共享内部代码,并将一些第三方库缓存下来以减少重复的下载。
常用的构件私有仓库的软件:
- Apache Archiva
- JFrog Artifactory
- Sonatype Nexus:也就是本文要介绍使用的搭建 maven 私服的软件官网

2. Nexus简介
Nexus是一个流行的二进制管理工具,它由 Sonatype 开发,可以作为 Maven、NuGet 和 Docker 等多种包管理器的仓库管理器。Nexus 可以提供一个中央储存库,供开发人员共享依赖项,同时还可以提供私有仓库功能,使企业能够更好地管理内部资源。
Nexus 有许多可定制的选项,可以帮助您配置Maven私有仓库以满足您的特定需求。本文将提供详细的 Nexus 搭建和配置指南,快速搭建属于自己的 Maven 私有仓库。
3. Nexus 搭建
3.1 安装 Java 环境
在安装Nexus之前,需要确保已经安装了Java环境(JDK 8或更高版本)。你可以在终端输入以下命令来检查是否已安装Java环境:
1 | |
如果系统已安装Java环境,将会输出Java版本信息。否则,需要先安装Java。
3.2 下载 Nexus 传送门


2.3 运行
- 切换到 nexus-3.19.1-01 的 bin 目录下
mac/linux平台执行命令:
./nexus runwindows平台执行命令:
nexus /run
tips:
run 是前台启动,可以看到实时的启动日志,start 是后台启动;
启动如果遇到数据库(DB)相关的错误,可以删除 sonatype-work/nexus3/db 文件夹,重新启动;
还有一个问题是当前用户的权限不足,使用管理员角色运行即可
- nexus 默认端口号
8081,启动成功后可直接访问 http://localhost:8081/
- 新建仓库需登录后方可操作,默认账号
admin,密码存放路径/sonatype-work/nexus3/admin.password - 登录成功后需修改密码

3. Nexus 内置仓库
3.1 三种类型
proxy: (代理)用来代理远程仓库,是介于远程仓库和本地仓库之间的私有仓库- 依赖存储策略:release,只会下载和存中央仓库中的发布版本依赖
group: (仓库组)对我们的仓库进行分组管理- 依赖存储策略:release,只会下载和存中央仓库中的发布版本依赖
hosted:(宿主)用于发布我们本地开发的项目,将项目发布到 hosted 仓库后再进行相关的部署工作- 依赖存储策略,release:用于存储稳定版本项目,snapshot: 用于发布快照版本软件
3.2 内置仓库
Nexus内置了多个仓库,我们关心的是其中的 maven 仓库,NuGet 是微软推出的一种用于.NET开发的包管理工具,类似于Maven、npm等,这里按下不表。

maven-central:(proxy类型) 用于代理远程仓库,缓存远程仓库中的软件包,减少网络传输开销

maven-release: (hosted类型)用于在本地存储发布的 release 版软件包,可以通过该仓库发布自己的软件包(通过设置 pom 文件中的 version,然后通过 maven 的 deploy 命令)
maven-snapshots: (hosted类型)用于在本地存储发布的 snapshots 版软件包,可以通过该仓库发布自己的软件包(通过设置 pom 文件中的 version,然后通过 maven 的 deploy 命令)
maven-public:(group类型) 将多个proxy仓库、hosted仓库和其他group仓库合并成一个虚拟仓库,在使用时就像一个单独的仓库
相比较 proxy 和 hosted 两种类型仓库,创建 group 仓库时需指定成员仓库

4. 自定义私有仓库

- 创建一个代理阿里云仓库的私有仓库(proxy类型):my_nexus

- 创建一个发布版本项目仓库:release 版本(hosted类型)

- 创建一个快照版本项目仓库:snapshot 版本(hosted类型)

- 创建一个 group 类型仓库

5. 自定义私有仓库的使用
创建是为了使用,接下来让我们看看如何将新创建好的私有仓库应用到项目中:
5.1 代理仓库的使用
在私有仓库列表选择一个要使用的私有仓库,拷贝地址备用
可以在 setting.xml 文件中 或在 pom.xml 文件中添加私有仓库:
该例配置中的releases和snapshots元素比较重要,它们用来控制Maven对于发布版构件
和快照版构件的下载。这里需要注意的是enabled子元素,该例中releases 的enabled值为true,表示开启JBoss仓库的发布版本下载支持,
而snapshots的enabled值为false,表示关闭 fengjian-maven-central 仓库的快照版本的下载支持。因此,根据
该配置,Maven只会从 fengjian-maven-central 仓库下载发布版的构件,而不会下载快照版的构件。
1 | |
5.1 部署仓库的使用

配置项目部署的远程仓库:release 版本 & snapshot 版本
1 | |
tips:release 和 snapshots 对应的 pom.xml 设置
1 | |
部署提示 401,依赖部署到远程仓库需要配置认证信息
解决方法:
在 maven 的 setting.xml 的
1 | |
6. 总结
至此,本文已经提供了 Nexus 搭建和配置 Maven 私有仓库的详细指南。通过这个教程,我们可以轻松地建立自己的 Maven 私有仓库,方便团队内部开发和组织内共享代码。如果有任何问题,请在评论区留言。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!