我在mvn版本中遇到此错误:准备目标:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project env-status-checks: Unable to tag SCM
[ERROR] Provider message:
[ERROR] The svn tag command failed.
[ERROR] Command output:
[ERROR] svn: E200007: Source and destination URLs appear not to point to the same repository.
这是失败的SVN命令
[INFO] Tagging release with the label env-status-checks-0.0.1...
[INFO] Executing: cmd.exe /X /C "svn --username akanchev --password ***** --no-auth-cache --non-interactive copy --file C:\Windows\TEMP\maven-scm-1102804858.commit --revision 9260 svn://svn.XXXX.local/qa/XX-tf/trunk/env-status-checks http://svn.XXXX.local/qa/XX-tf/tags/env-status-checks-0.0.1"
[INFO] Working directory: C:\Users\Administrator\.jenkins\jobs\Test release\workspace
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
maven发布插件的pom.xml配置为:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<tagBase>http://svn.XXXX.local/qa/XX-tf/tags</tagBase>
</configuration>
</plugin>
这就是SVN scm:
<scm>
<connection>scm:svn:svn://svn.XXX.local/qa/wh-tf/trunk/env-status-checks</connection>
<developerConnection>scm:svn:svn://svn.XXX.local/qa/XX-tf/trunk/env-status-checks</developerConnection>
<url>scm:svn:svn://svn.XXX.local/qa/XX-tf/</url>
</scm>
最终解决方案(感谢Ben):
我实际上被发布插件的maven指南所迷惑。在这个例子中
<tagBase>https://svn.mycompany.com/repos/myapplication/releases</tagBase>
适合我的是:
TAG base
<tagBase>svn://svn.XXXX.local/qa/XX-tf/tags/</tagBase>
SCM连接
<scm>
<connection>scm:svn:svn://svn.XXXX.local/qa/XX-tf/trunk/env-status-checks</connection>
</scm>
答案 0 :(得分:8)
你的svn copy命令混合了两种不同的协议。源是svn://,目的地是http://。在执行服务器端复制时,您需要使用相同的协议,因为目标和源必须通过相同的连接可访问。
通过http://切换到同时使用svn://或两者都可以解决您的问题。