mvn deploy 发布流程
deploy 将项目发布到远程仓库,供团队共享使用。
deploy 命令
基本用法
Bash
mvn deploy
执行阶段
XML
validate → compile → test → package → verify → install → deploy
发布内容
XML
构件 jar/war
pom.xml 元数据
sources.jar 源码包
javadoc.jar 文档包
distributionManagement 配置
发布仓库声明
Bash
<distributionManagement>
<!-- 正式版仓库 -->
<repository>
<id>nexus-releases</id>
<name>Releases Repository</name>
<url>https://nexus.company.com/repository/maven-releases/</url>
</repository>
<!-- 快照版仓库 -->
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Snapshots Repository</name>
<url>https://nexus.company.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
元素说明
| 元素 | 说明 |
|---|---|
| repository | 正式版发布仓库 |
| snapshotRepository | 快照版发布仓库 |
| id | 仓库标识,与认证对应 |
| url | 仓库地址 |
认证配置
settings.xml
Bash
<settings>
<servers>
<server>
<id>nexus-releases</id>
<username>deployer</username>
<password>deploy-password</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>deployer</username>
<password>deploy-password</password>
</server>
</servers>
</settings>
id 必须与 repository 的 id 一致。
发布流程
SNAPSHOT 发布
Bash
# 版本:1.0.0-SNAPSHOT
mvn deploy
# 发布到 snapshotRepository
# 同版本可多次发布(时间戳区分)
RELEASE 发布
Bash
# 版本:1.0.0
mvn deploy
# 发布到 repository
# 同版本只能发布一次
发布策略
版本策略
| 版本类型 | 仓库 | 发布次数 |
|---|---|---|
| SNAPSHOT | snapshotRepository | 可多次 |
| RELEASE | repository | 仅一次 |
发布前检查
XML
# 清理后发布
mvn clean deploy
# 跳过测试发布(不推荐)
mvn clean deploy -DskipTests
发布常见错误
错误类型
| 错误 | 原因 |
|---|---|
| 认证失败 | settings.xml 配置错误 |
| 版本已存在 | RELEASE 版本重复发布 |
| 网络超时 | 仓库连接问题 |
| 权限不足 | 用户无发布权限 |
排查方法
Bash
# 详细日志
mvn deploy -e -X
发布到中央仓库
前置条件
- Sonatype 踴账号
- GPG 签名配置
- 项目元数据完整
配置示例
XML
<distributionManagement>
<snapshotRepository>
<id>sonatype-snapshots</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>sonatype-releases</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
</distributionManagement>
发布验证
查看仓库
Bash
# 访问仓库地址验证
https://nexus.company.com/repository/maven-releases/com/example/my-app/1.0.0/
其他项目引用
text
<dependency>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
</dependency>
release 插件
使用 maven-release-plugin
text
# 准备发布
mvn release:prepare
# 执行发布
mvn release:perform
自动流程
text
1. 标记版本 SNAPSHOT → RELEASE
2. 打标签(Git tag)
3. 发布到仓库
4. 更新到下一版本 SNAPSHOT
要点总结
- mvn deploy 发布到远程仓库
- distributionManagement 配置发布仓库
- settings.xml 配置认证信息
- SNAPSHOT 可多次发布,RELEASE 仅一次
- 发布前建议 clean deploy
- 使用 release 插件自动化发布流程
📝 发现内容有误?点击此处直接编辑