我正在使用 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>
<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>
<connection>scm:svn:https://domain/svn/app/branches/2.4.8.x</connection>
</scm>
我的svn版本是1.8.5 (r1542147)