目录
8.2 在 profiles 中启用 snapshot 支持
Maven 高级 - 私服
1. 私服的概念与作用
1.1 什么是私服
私服是一个部署在公司局域网内的 Maven 仓库服务,本质上属于远程仓库。它既可以代理 Maven 中央仓库(用于下载依赖),也可以供开发者上传模块资源,实现项目间依赖共享。企业中通常搭建一台私服供整个公司使用,开发者只需配置一次即可使用。
1.2 私服的使用目的
在企业开发中,不同小组或项目组可能会共享某些模块(如工具类、通用组件等)。将这些模块上传至私服后,其他项目即可通过 Maven 坐标进行依赖,而无需重复开发。这样既提高了效率,也便于统一版本和维护。
2. Maven 依赖的查找顺序
2.1 查找依赖的流程
当 Maven 编译项目时,会根据以下顺序依次查找依赖:
-
本地仓库:优先查找本地仓库是否已缓存目标依赖。
-
私服仓库:本地未命中时,Maven 会连接私服查找依赖。
-
中央仓库:私服中也没有该依赖时,Maven 最终会请求中央仓库下载,并同步到本地和私服中。
该顺序体现了 Maven 的缓存优先策略,避免重复下载。
3. 私服中的仓库类型与版本关系
3.1 仓库类型分类
在私服服务中,通常包含以下几类仓库:
-
release:用于存放正式版本的依赖或模块(不包含 snapshot 字样)能趋于稳定、当前更新停止。 -
snapshot:用于存放开发过程中的快照版本(版本号中含 snapshot),即功能不稳定、尚处于开发中。 -
central:代理 Maven 官方中央仓库,起中转下载作用。 -
group:聚合多个仓库为一体,便于统一配置下载地址。
3.2 与版本号的关系
当我们执行 deploy 上传模块时,Maven 会根据模块版本号是否包含 snapshot 自动判断上传目标:
-
包含
snapshot,上传至 snapshot 仓库
-
否则,上传至 release 仓库
4. 上传资源到私服的配置步骤
4.1 配置用户名和密码
在 Maven 的 settings.xml 文件中,使用 <servers> 标签配置上传私服所需的账号信息。例如:
<server>
<id>nexus-release</id>
<username>admin</username>
<password>admin123</password>
</server>
该 ID 需要与 pom 文件中的仓库 ID 保持一致。
4.2 配置上传目标仓库地址
在需要上传的模块的 pom.xml 中,使用 <distributionManagement> 标签指定上传仓库的地址:
<distributionManagement>
<repository>
<id>maven-release</id>
<url>http://192.168.150.101:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshot</id>
<url>http://192.168.150.101:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
此配置分别定义了正式版与快照版的上传地址。
4.3 配置私服连接地址(镜像)
在 settings.xml 中 <mirrors> 标签下添加镜像配置,用于下载依赖时优先连接私服:
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.150.101:8081/repository/maven-public/</url>
</mirror>
如之前配置了阿里云镜像,应将其注释或删除,以避免冲突。
5. 下载依赖的完整流程
5.1 下载流程说明
当我们在 pom.xml 中声明一个依赖时,Maven 会依次按照“本地仓库 → 私服 → 中央仓库”的顺序进行查找和下载。如果下载自中央仓库,会自动将资源同步到本地仓库与私服仓库中。
5.2 下载配置条件
确保在 settings.xml 中配置了 <mirrors>,私服地址通常由开发组长或项目负责人提供,保证配置正确后,所有开发者即可共享同一私服进行依赖管理。
6. 私服的测试与使用环境
6.1 企业级使用方式
真实企业中,私服通常部署在公司内部服务器,如 192.168.150.101,并通过浏览器提供 Web 管理界面查看、管理上传的依赖资源。
6.2 本地模拟方式
为方便学习,此处用了私服的本地版本(压缩包形式)。下载解压后,执行其中的 start.bat 脚本即可一键启动私服服务。


6.3 修改配置以连接本地私服
将原来配置中的地址修改为 localhost,如:
http://localhost:8081/repository/maven-public/
以完成本地私服的模拟环境连接测试。
7. 总结
7.1 私服的功能作用
私服是 Maven 的远程仓库之一,部署在局域网中,为开发团队提供依赖上传与下载服务,解决多项目依赖共享问题。
7.2 私服的使用步骤
配置包括:上传时配置 <servers> 和 <distributionManagement>,下载时配置 <mirrors>。通过 mvn deploy 命令将模块上传后,其他模块便可通过坐标进行依赖。
8. 附:快照依赖启用配置
8.1 snapshot 依赖无法使用的原因
有时我们在项目中使用 xxx-SNAPSHOT 版本依赖,即使仓库中已上传成功,但 Maven 却无法下载。这是因为所配置的仓库地址默认可能未启用对 snapshot 的支持。
8.2 在 profiles 中启用 snapshot 支持
可以通过 settings.xml 文件中的 <profiles> 标签添加如下配置,显式启用快照依赖的下载权限:
<profile>
<id>allow-snapshots</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven-public</id>
<url>http://192.168.150.101:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
这样配置后,即使使用 SNAPSHOT 版本,也能正常从私服拉取依赖。
END
学习自:黑马程序员——JavaWeb课程
5093

被折叠的 条评论
为什么被折叠?



