【发布时间】:2011-08-23 05:23:23
【问题描述】:
我不确定我是否在这里做错了,或者 maven-release-plugin 中是否存在错误。但是当我尝试发布 1.2.1 版本时,maven 会创建一个具有正确版本的标签,但在标签的 pom.xml 中设置的版本号设置为 1.2(而不是应该的 1.2.1)。
这是我尝试修复 1.2 中的错误时所做的:
- svn cp URL/tags/myapp-1.2 URL/branches/myapp-1.2
- 将 URL/branches/myapp-1.2/pom.xml 中的 project.version 编辑为 1.2.1-SNAPSHOT(原为 1.2)
- 修复源代码中的错误
- 提交更改
- mvn 发布:准备
- #当询问时,使用默认值:发布版本 1.2.1,下一个开发版本 1.2.2-SNAPSHOT
- [INFO] 构建成功
到目前为止还可以,但是如果我检查新标签中的代码,则版本错误! URL/tags/myapp-1.2.1/pom.xml 的版本是 1.2,而不是标签名称所暗示的 1.2.1。如果我现在只运行 mvn release:perform,新上传的 jar 将其名称设置为 myapp-1.2.jar,覆盖存储库中的原始文件。
我已将 maven-release-plugin 版本从 2.0 升级到 2.1,但没有取得更大的成功。我知道导致此错误的原因是插件执行此操作的过程的一部分:
svn --non-interactive copy --file /tmp/maven-scm-2371633.commit --revision 19866 URL/tags/myapp-1.2 URL/tags/myapp-1.2.1
这会将源代码从 tags/myapp-1.2 复制到 tags/myapp-1.2.1,但这不包含任何更改。你同意它应该是从branchs/myapp-1.2,而不是标签中复制的吗?
这对其他人有用吗,你看看我是否做错了什么?
【问题讨论】:
-
您是否更改了您在分支中使用的那些 pom 中的 SCM 区域?因为标签中的 pom 已经用关于标签等的完整限定信息重写了 SCM 区域中的 scm 信息,而不是你所期望的。此外,我建议使用三位数的版本号,如 1.2.0,如果修复错误,您可以将其更改为 1.2.1 等。
-
您应该深入了解 maven-release 插件,因为它支持您手动执行的分支 (maven.apache.org/plugins/maven-release-plugin/examples/…)。
-
谢谢,khmarbaise。我想知道我是否可能在这里遗漏了一些重要信息。 myapp 实际上是根项目的子模块。就像在 /trunk/myapp/ 中一样。这有关系吗?
-
如果这意味着您有一个多模块构建,那么这很重要,因为配置 scm 区域应该只在项目的根目录中完成。
标签: maven release patch maven-release-plugin