关于svn:为什么在标记时mvn release:prepare失败?

关于svn:为什么在标记时mvn release:prepare失败?

Why does mvn release:prepare fail while tagging?

使用我的多项目pom,在运行release:prepare时出现错误。 项目设置和每个发行步骤运行正常之前,没有什么花哨的地方。
我得到的错误是:

1
2
3
4
5
6
7
8
9
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Unable to tag SCM
    Provider message:
    The svn tag command failed.
    Command output:
    svn: Commit failed (details follow):
    svn: File '/repos/june/tags/foo-1.0.2/foo.bar.org/pom.xml' already exists

是否知道它的来源以及如何解决?

(对于重复的帖子,很抱歉-首先已关闭,因为我没有将其表达为可以回答的问题。我希望现在可以。)

编辑
Maven发行插件负责版本处理本身。 因此,当我检查Subversion存储库中的路径时,该路径尚不存在。

编辑2
@Ben:我不知道服务器版本,但是客户端也是1.5.2。


最新版本的maven-release-plugin中解决了此问题。将此添加到您的POM中以将其插入。

1
2
3
4
5
6
7
8
9
10
<build>
  <pluginManagement>
    <plugins>
      <plugin>
        maven-release-plugin</artifactId>
        <version>2.0-beta-9</version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

已解决的问题是MRELEASE-375。


可能有用的链接:

http://weblogs.java.net/blog/johnsmart/archive/2008/12/subversion_mave.html(以前提到)

http://jira.codehaus.org/browse/MRELEASE-427(真正的错误?)

http://jira.codehaus.org/browse/SCM-406(相关错误)

http://olafsblog.sysbsb.de/?p=73(较新的,也许是更有用的文章)


罗兰(Roland),如果您还没有看到它,请看约翰·斯玛特(John Smart)关于此问题的博客文章。尽管他提出的脚本不雅致,但可以解决问题:

http://weblogs.java.net/blog/johnsmart/archive/2008/12/subversion_mave.html

另一种解决方案是使用Git。 (我==目前正在撰写有关Maven和Git的文章)


这是因为您尚未增加版本号-Subversion存储库中已经存在1.0.2。

要么增加版本,要么从仓库中删除/repos/june/tags/foo-1.0.2标签。


我在没有安装svn的服务器上遇到构建问题时碰到了这篇文章。

这有助于:
Jenkins与Subversion


最新的插件版本2.0-beta-9中已修复此问题。


我花了很多时间与此作斗争。 SVN 1.5.1+的不同之处在于,它中断了直接从工作副本提交到标签的工作-这正是Maven所做的。关于谁负责解决此问题,仍然存在很多争议。

您可以执行" svn更新"并重新运行release命令,但是如果您正在执行release:branch,则这将导致release插件不将您的POM文件恢复为之前的状态。

我知道最好的解决方法是退回到Subversion 1.5.0。


据我所知,这是Subversion 1.5中的错误,与maven没有直接关系。但是,解决该问题的方法是更新本地svn存储库并再次运行release:prepare目标。


推荐阅读