maven release:branch 是不是应该更新分支的 scm url?

Posted

技术标签:

【中文标题】maven release:branch 是不是应该更新分支的 scm url?【英文标题】:Is maven release:branch supposed to update scm url of the branch?maven release:branch 是否应该更新分支的 scm url? 【发布时间】:2014-09-15 08:39:09 【问题描述】:

我的 pom 中有这个:

<scm>
    <connection>scm:javasvn:http://url.com/repo/myProject/trunk</connection>
    <developerConnection>scm:javasvn:http://url.com/repo/myProject/trunk</developerConnection>
    <url>http://url.com/websvn/listing.php?repname=repo&amp;path=/myProject/trunk</url>
</scm>

当我跑步时:

mvn release:branch -DbranchName=myBranch

它在这里成功创建了分支:

http://url.com/repo/myProject/branches/myBranch

但是当我查看这个分支的 pom.xml 时,“scm”部分仍然和主干一样

<scm>
    <connection>scm:javasvn:http://url.com/repo/myProject/trunk</connection>
    <developerConnection>scm:javasvn:http://url.com/repo/myProject/trunk</developerConnection>
    <url>http://url.com/websvn/listing.php?repname=repo&amp;path=/myProject/trunk</url>
</scm>

Doc says:

转换 POM 中的 SCM 信息以包含最终的 标签的目的地

插件不应该用“/branches/myBranch”替换“/trunk”吗?还是我们应该手动执行此操作?

【问题讨论】:

【参考方案1】:

该插件将“trunk”替换为“branches/myBranch”,但不要切换您的工作副本。在新创建的分支中,查看远程 pom.xml,该分支的 scm 信息应该已更改。如果无法提交更改,maven:release 将失败。

r1643
[maven-release-plugin] prepare for next development iteration
---------------------
r1642
[maven-release-plugin]  copy for branch a-project-1.0
---------------------
r1641
[maven-release-plugin] prepare branch a-project-1.0
---------------------  

在您创建分支的修订版中,您的 svn 日志是这样的吗?

在本例中,r1641 将 pom scm 信息从“trunk”更改为“branches/a-project-1.0”。r1642 将主干复制到分支,创建它。r1643 再次将 pom scm 信息从“branches/a-project-1.0”更改为“trunk”,这样您就可以在工作副本中保持在trunk。

当我使用 maven 发布但它失败时,总是在命令行显示错误,并在我的工作副本中留下临时文件,必须使用 mvn --batch-mode release 删除或清理:干净

尝试将您的 scm.url 更改为“http://url.com/repo/myProject/trunk”而不是“http://url.com/websvn/listing.php?repname=repo&path=/myProject/trunk”(我认为 maven 无法更改您当前的 url 参数) 然后再次使用:mvn --batch-mode -DbranchName="A_TEST" -Darguments="-DskipTests=true" 并检查控制台错误、svn 项目根文件夹中的 svn 日志,并检查本地工作副本修改。 如果一切都应该没问题,但不是,请检查您的 Maven 运行时版本。发布标签时,我在使用 maven:release 和 maven 3.0.5 时遇到了一些问题。我仅将 maven 3.1+ 用于分支/发布自动化目的。

【讨论】:

那我为什么还有“trunk”呢? 我添加了更多信息。希望能帮助您解决问题。 尝试了所有(批处理模式,更改 url 格式)没有任何成功。我仍然在分支的 scm 部分有“主干”。日志中没有错误。在这里创建了一个问题:issues.apache.org/jira/browse/MRELEASE-922【参考方案2】:

我换了

scm:javasvn:http://...

scm:svn:http://...

现在转换完成了。

【讨论】:

以上是关于maven release:branch 是不是应该更新分支的 scm url?的主要内容,如果未能解决你的问题,请参考以下文章

避免使用 maven-release-plugin 为下一次开发迭代更新 POM 版本

安全地重命名远程源分支[重复]

Maven进阶宝典

手动添加jar包到maven仓库

有条件地在标记提交上执行Jenkins管道阶段

应“云”而生的 Java 框架