在在线帮助之后,我尝试了 Maven 发布插件的正常标准使用。但是当我执行 mvn release:prepare 时,出现以下错误(silverfish 是我的项目名称):
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli) on project silverfish: 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.
[ERROR] -> [Help 1]
这是我的 pom.xml 中的 scm 部分:
<scm>
<connection>scm:svn:http://svnuser:passwd@some.address/scm/svn/silverfish</connection>
<url>http://viewurl</url>
</scm>
我认为这与“用户/密码”部分有关,因为 maven 进程的输出给出:
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /home/dittrich/NetBeansProjects/silverfish && svn --username svnuser --password '*****' --non-interactive commit --file /tmp/maven-scm-1445257989.commit --targets /tmp/maven-scm-7382722062367813549-targets
[INFO] Working directory: /home/dittrich/NetBeansProjects/silverfish
[INFO] Tagging release with the label silverfish-1.9...
[INFO] Executing: /bin/sh -c cd /home/dittrich/NetBeansProjects/silverfish && svn --username svnuser --password '*****' --non-interactive copy --file /tmp/maven-scm-723027784.commit --revision 106 http://some.address/scm/svn/silverfish 'http://svnuser:passwd@some.address/scm/svn/silverfish/tags/silverfish-1.9'
[INFO] Working directory: /home/dittrich/NetBeansProjects/silverfish
注意:签入部分没有问题,所以基本的svn配置似乎没问题。
在我看来,问题在于 maven 为复制命令提供了一个 url,没有用户名密码(使用 --username 和 --password 开关)和一个(使用 user:passwd@sever 语法)。然后 subversion 认为这些 url 是不一样的。
mvn copy http://some.address/scm/svn/silverfish 'http://svnuser:passwd@some.address/scm/svn/silverfish/tags/silverfish-1.9'
我不知道这是否是一个颠覆问题,因为颠覆应该明白这些网址仍然是相同的。还是 Maven 问题,因为 Maven 应该使用相同的 url 语法?
顺便说一句,我使用的是 svn,版本 1.7.7 (r1393599),我的 svn 服务器说它是“由 SVN/1.7.5 SVNKit/1.7.5-2 (http://svnkit.com/) t20120724_0758 提供支持”Apache Maven 3.0.4 Java 版本:1.6.0_30,供应商:Sun Microsystems Inc.