Nexus 3 + Maven 使用指南
一、 仓库结构
已设置以下仓库:
- maven-snapshots (仅接收 -SNAPSHOT 版本)
- maven-releases (只接收正式版本)
- 可另建 maven-group 聚合上述仓库与 Maven Central,统一访问
依据 Sonatype 官方文档,分仓库管理是最佳实践:
“一个 group 仓库可以聚合多个 proxy 和 hosted 仓库,提供单一 URL,使客户端配置更简单。”
二、开发者手册 — 配置项目
1. 在项目 pom.xml 中配置发布目标
1 2 3 4 5 6 7 8 9 10 11
| <distributionManagement> <snapshotRepository> <id>nexus-snapshots</id> <url>https://www.4399mc.cn/nexus/repository/maven-snapshots/</url> </snapshotRepository> <repository> <id>nexus-releases</id> <url>https://www.4399mc.cn/nexus/repository/maven-releases/</url> </repository> </distributionManagement>
|
Maven 会根据版本号处理上传目标:后缀 -SNAPSHOT 会发送到 snapshots 仓库,其它版本发送到 releases 仓库.
2. 配置合并依赖来源(可选)
若有配置统一仓库入口(如 maven-group),可在 settings.xml 添加镜像如下:
1 2 3 4 5 6 7 8
| <mirrors> <mirror> <id>maven-central</id> <mirrorOf>*</mirrorOf> <url>https://www.4399mc.cn/nexus/repository/maven-central/</url> </mirror> </mirrors>
|
什么是 Maven 的 mirror?
Maven 允许你在用户级配置(~/.m2/settings.xml)里配置“镜像仓库”,这样当 Maven 去找依赖时,就会绕过原本定义在项目 pom.xml 或默认中央仓库的 URL,统一转向你指定的内部仓库(比如 Nexus)上下载。
为什么这么做?
提高访问速度:团队内部访问内网 Nexus 比访问远端 Maven 中央更快;
控制与缓存:集中管理依赖,可监控、审计以及缓存所依赖的 Artifact;
无侵入项目配置:不需要改 pom.xml,项目依旧统一拉取依赖,但路径由你控制。
这里的起到一个代理缓存作用(机房网络不能访问外网,会导致拉取境外依赖失败)
三、本地 Maven settings.xml 设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <settings> <servers> <server> <id>nexus-snapshots</id> <username>deploy-user</username> <password>部署用户密码</password> </server> <server> <id>nexus-releases</id> <username>deploy-user</username> <password>部署用户密码</password> </server> </servers> <mirrors> <mirror> <id>maven-central</id> <mirrorOf>*</mirrorOf> <url>https://www.4399mc.cn/nexus/repository/maven-central/</url> </mirror> </mirrors> </settings>
|
说明: 必须与 POM 文件中配置的 id 标签一致,否则 Maven 投递时不会携带凭据。
四、常用命令
正常发布:
手动发布单个 JAR(无完整项目结构时)
1 2 3 4 5 6 7 8 9
| mvn deploy:deploy-file \ -DgroupId=com.yourorg \ -DartifactId=your-artifact \ -Dversion=1.0.0-SNAPSHOT \ -Dpackaging=jar \ -Dfile=path/to/your.jar \ -DrepositoryId=nexus-snapshots \ -Durl=https://www.4399mc.cn/nexus/repository/maven-snapshots/
|
五、引入已发布依赖
在项目 pom.xml 中添加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <repositories> <repository> <id>nexus-group</id> <url>https://www.4399mc.cn/nexus/repository/maven-group/</url> </repository> </repositories>
<dependencies> <dependency> <groupId>com.yourorg</groupId> <artifactId>your-artifact</artifactId> <version>1.0.0</version> </dependency> </dependencies>
|
或者直接引用 release 或 snapshot 仓库依据版本合理选择即可。