Maven版本:在回滚错误地成功后准备/执行错误的内容

qvsjd97n  于 2023-11-17  发布在  Maven
关注(0)|答案(3)|浏览(143)

我们在内部使用Maven和Subversion。我们也使用Maven的Release插件。我们在执行以下步骤时注意到下面描述的问题(我认为是正确的)。

**1.**我们运行release:prepare

  • Maven将 Backbone.js 版本更新为1.0.0
  • Maven运行svn copy trunk/myproject tags/myproject-1.0.0,从而创建标记myproject-1.0.0
  • Maven将 Backbone.js 版本更新为1.0.1-SNAPSHOT
    **2.**我们运行release:rollback
  • Maven将中继版本重置为1.0.0-SNAPSHOT
  • Maven不删除标签,因为Maven不做这种事情。
    **3.**我们向trunk提交了更多的更改,显然是针对1.0.0-SNAPSHOT版本。
    **4.**我们再次运行release:prepare
  • Maven将 Backbone.js 版本更新为1.0.0
  • Maven运行svn copy trunk/myproject tags/myproject-1.0.0以为它从最新的 Backbone.js 创建了标签myproject-1.0.0,但是Subversion(1.6和1.7版本)会代Maven创建tags/myproject-1.0.0/myproject.
    **5.**我们运行release:perform
  • Maven检查标记myproject-1.0.0的内容。
  • Maven构建内容并将结果部署到Nexus。

问题很明显:第3步中的更改没有进入标记。我们现在发布的1.0.0没有更改。
问题是:我们如何解决这个问题?Maven的发布回滚特性是不是天生就被破坏了?

yr9zkbsy

yr9zkbsy1#

公平地说,rollback应该将项目和SCM重置为允许第二个prepare发生的状态。* 这包括删除标签。* 答案现在很明显(谷歌搜索“maven release rollback remove tag”):
http://maven.apache.org/maven-release/maven-release-plugin/examples/rollback-release.html
在SCM中为该版本创建的分支/标记将被删除。注意:这尚未实现,因此您需要从SCM中手动删除分支/标记。有关详细信息,请参阅MRELEASE-229
解决方案是强制release:rollback包含一个命令,使用类似org.codehaus.mojo:exec-maven-plugin的东西删除SCM标记。除此之外,将rollback Package 在一个脚本中,在外部执行此操作。

83qze16e

83qze16e2#

自Maven Release Plugin版本3.0.0-M1 release:rollback包含scm标记删除。参见https://issues.apache.org/jira/browse/MRELEASE-229

mmvthczy

mmvthczy3#

正如你所发现的,release:rollback在不清理SCM时没有太多的实用性。我们的商店所做的是设置我们的Jenkins自动化来运行“mvn release:prepare release:perform”与Jenkins M2 Release Plugin结合使用。
如果失败了,我们需要在Subversion中删除这个标签,但是,同样,我们必须使用rollback来执行这个操作.

相关问题