【发布时间】:2014-05-07 18:33:00
【问题描述】:
我正在使用 maven-release-plugin。我正在尝试发布一个分支,但它在尝试执行此命令时失败:
cmd.exe /X /C "svn --non-interactive copy --file C:\Users\USER~1\AppData\Local\Temp\maven-scm-711744598.commit --parents --revision 0 https://domain/svn/app/branches/2.4.8.x https://domain/svn/app/tags/App-2.4.8.1"
它给出了这个错误:
svn: E195012: Unable to find repository location for 'https://domain/svn/app/branches/2.4.8.x' in revision 0
我认为这是在准备目标中发生的,因为当它失败时它会说:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5:prepare
我问过一个svn专家,他说:
等等,为什么它试图从 r0 复制一些东西?根据定义,r0 中没有任何内容。 r0 始终是一个空存储库,第一个对象添加到 r1。这就是它失败的原因。问题是为什么 Maven 尝试了它。如果您为 'svn copy' 提供修订参数,那么您创建的分支/标签基于您指定的修订的源,因此源必须在该修订中存在(如果你不指定,你得到 HEAD,即最新版本)...至于那,我对 maven 或其插件一无所知
那么,为什么 maven 试图从修订版 0 复制?这是我运行的 maven 命令:
mvn --batch-mode release:prepare release:perform
我的根 pom 的 maven-release-plugin 定义如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<developmentVersion>2.4.8.2-SNAPSHOT</developmentVersion>
<releaseVersion>2.4.8.1</releaseVersion>
<branchBase>https://domain/svn/app/branches</branchBase>
<tagBase>https://domain/svn/app/tags</tagBase>
</configuration>
</plugin>
另外,我的 scm 标签看起来像这样:
<scm>
<connection>scm:svn:https://domain/svn/app/branches/2.4.8.x</connection>
</scm>
我的 svn 版本是 1.8.5 (r1542147)
【问题讨论】:
-
我清理了所有东西并运行了 release:prepare 并且它成功地没有问题。也许这是一个错误,同时运行 release:prepare 和 release:perform 会导致这种情况。
标签: java maven svn maven-release-plugin