You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从后续阶段恢复失败的Maven release:prepare(跳过失败阶段)

问题描述

执行mvn release:prepare时,在第11阶段scm-commit-release失败,原因是RTC(Jazz)SCM工作区存在问题,错误提示无法确定变更集所属组件。已手动完成等效的提交操作,尝试用-rf release:prepare恢复构建,但Maven仍从失败的第11阶段开始并再次失败。希望让Maven从第12阶段scm-tag或第13阶段rewrite-poms-for-development继续执行,现询问:

  1. 这种恢复方式是否可行?
  2. Maven如何确定从特定阶段恢复而非更早阶段?是否可修改恢复阶段?

错误日志

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M1:prepare 
(default-cli) on project driver-component-root-pom: Unable to commit files
[ERROR] Provider message:
[ERROR] Error code for Jazz SCM create changeset command - 9
[ERROR] Command output:
[ERROR] Problem running 'create changeset':
[ERROR] Cannot determine which component to create change set in. Specify a component.

恢复时日志

[INFO] --- maven-release-plugin:3.0.0-M1:prepare (default-cli) @ driver-component-root-pom ---^
[INFO] phase verify-release-configuration
[INFO] starting prepare goal, composed of 17 phases: check-poms, scm-check-modifications, 
check-dependency-snapshots, create-backup-poms, map-release-versions, input-variables, 
map-development-versions, rewrite-poms-for-release, generate-release-poms, run-preparation-goals,
scm-commit-release, scm-tag, rewrite-poms-for-development, remove-release-poms, 
run-completion-goals, scm-commit-development, end-release
[INFO] Resuming release from phase 'scm-commit-release'
[INFO] [prepare] 11/17 scm-commit-release
[INFO] Checking in modified POMs...
.
.
.
(fails exactly the same way again)
解决方案与说明

1. 跳过scm-commit-release阶段继续执行的可行性

可行,但需要手动干预Maven release插件的状态文件。你已经手动完成了提交,只要确认手动提交的内容和插件要提交的完全一致(即修改后的release版本POM文件),跳过该阶段不会破坏release流程的完整性,后续的scm-tag和rewrite-poms-for-development阶段可以正常执行。

2. Maven确定恢复阶段的机制及修改方法

  • 恢复阶段的判定逻辑:Maven release插件执行prepare时,会在项目根目录生成release.properties文件,里面记录了当前release的状态,包括已完成的阶段、版本信息等。插件重启时会读取这个文件,找到最后标记为未完成的阶段,从该阶段开始执行。
  • 修改恢复阶段的方法:
    • 打开项目根目录下的release.properties文件;
    • 找到记录当前阶段的字段(通常是currentPhase或与release.prepare.goal相关的配置);
    • 将字段值修改为你想启动的目标阶段,比如要从scm-tag开始,就把对应值改为scm-tag;
    • 保存文件后,重新执行mvn release:prepare -rf release:prepare,插件就会从指定阶段启动。

注意:修改前必须确认scm-commit-release的操作已通过手动方式完成,且状态与插件执行完成后的状态完全一致,否则后续阶段可能出现版本不匹配或SCM状态不一致的问题。

内容的提问来源于stack exchange,提问作者devopsmikey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:25:38