03-Maven私服Nexus

参考资料:
- 菜鸟教程:https://www.runoob.com/maven/maven-tutorial.html
- 极客学院:https://wiki.jikexueyuan.com/project/maven/
1.1 概念
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。
有了私服之后,当 Maven 需要下载依赖时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件/依赖下载到私服,再提供给本地仓库下载。私服可以解决在企业做开发时每次需要的 jar 包都要在中央仓库下载,且每次下载完只能被自己使用,不能被其他开发人员使用的问题。
所谓私服就是一个服务器,但是不是本地层面的,是公司层面的,公司中所有的开发人员都在使用同一个私服。
1.2 架构
| 无私服 | 有私服 |
|---|---|
![]() |
![]() |
可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。如测试使用 Sonatype Nexus 安装配置私服仓库。
1.3 Nexus安装【☆】
1.3.1 下载
1.3.2 安装
下载 nexus-2.x-bundle.zip 解压即可。
| nexus安装目录 |
|---|
![]() |
1.4 启动【☆】
解压后在 bin 目录中执行 cmd(需要以管理员权限执行):
nexus install在系统中安装nexus服务- nexus uninstall 卸载nexus服务
nexus start启动服务- nexus stop 停止服务

注意:
- 私服启动后,为了方便后面验证测试,该 cmd 窗口
不要关闭!(实测为一直windows后台自启)- Nexus 私服使用的是
8081端口,需要确保该端口没有被占用;- 8081 端口占用问题,可通过 电脑管家 中扫描开启启动项中,把 Nexus 服务开机自启禁用。
1.5 Nexus登录【☆】
访问私服:http://localhost:8081/nexus/
右上角 login in 默认登陆账号 admin 密码 admin123
| 登录 Nexus 才可以使用 Nexus 管理功能 |
|---|
![]() |
1.6 仓库列表【☆】
| 仓库类型 | 描述 |
|---|---|
| group | 包含多个仓库,通过group库的地址可以从包含的多个仓库中查找构件 |
| hosted | 私服 服务器本地的仓库,其中存储诸多构件 |
| proxy | 代理仓库,其会关联一个远程仓库, 比如中央仓库,aliyun仓库,向该仓库查找构件时,如果没有会从其关联的仓库中下载 |
| 仓库名 | 描述 |
|---|---|
| Releases | 存放项目的稳定发布版本,一个模块做完后如果需要共享给他人,可以上传到私服的该库 |
| Snapshots | 对应不稳定的发布版本 |
| 3rd party | 存放中央仓库没有的 ,如ojdbc.jar,可以上传到私服的该库中 |
| 仓库列表 |
|---|
![]() |
1.7 Maven配置私服 【★】
在maven中配置私服,使得maven可以从私服上获取构件/依赖。
1.7.1 仓库组
私服中有一个仓库组,组中包含多个仓库,可以指定仓库组的url,即可从多个仓库中获取构件/依赖。
| 仓库组 注意:proxy的仓库排序在最后 |
|---|
![]() |
| 设置 中央仓库 从远程地址下载,如 aliyun 中央仓库 地址:http://maven.aliyun.com/nexus/content/groups/public |
|---|
![]() |
| Nexus 私服本地存储物理存储位置 |
|---|
![]() |
1.7.2 Maven关联私服
- 配置
settings.xml,设置私服地址、认证等信息
1 | |
至此,Maven 项目中需要依赖时,Maven 会从私服中下载
注意:
为了测试,可以将 maven 中的本地仓库中的 依赖 全删除,然后通过 IDEA 的 自动导入包的设置进行自动下载,此时会将依赖全部下载到私服中。
验证私服中是否下载成功,访问
settings.xml中配置的 profile 标签中的 仓库对应地址:

1.8 Maven项目部署到私服
- 执行 :
mvn deploy即可将项目部署到私服对应的仓库中,此时项目中的打包方式多为 jar
但需要提前在项目的pom.xml中配置部署私服仓库位置,如下:
1 | |
注意:
如上的 repository的 id 依然是要和 settings.xml 中配置的 server 中的 id 一致,才能通过私服的认证。







