Maven 发布:使用用户名和密码(svn)准备标记失败

Posted

技术标签:

【中文标题】Maven 发布:使用用户名和密码(svn)准备标记失败【英文标题】:Maven release:prepare tagging fails using username and password (svn) 【发布时间】:2012-11-23 09:15:43 【问题描述】:

我已经按照在线帮助尝试了一个正常的标准使用 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" 阿帕奇 Maven 3.0.4 Java 版本:1.6.0_30,供应商:Sun Microsystems Inc.

【问题讨论】:

【参考方案1】:

从 SCM 连接 URL 中删除用户名和密码:

<scm>
    <connection>scm:svn:http://some.address/scm/svn/silverfish</connection>
    <url>http://viewurl</url>
</scm>

并将它们添加到发布插件中:

<plugin>
    <artifactId>maven-release-plugin</artifactId>
    ...
    <configuration>
        <username>$svn.username</username>
        <password>$svn.password</password>
    </configuration>
</plugin> 

【讨论】:

以上是关于Maven 发布:使用用户名和密码(svn)准备标记失败的主要内容,如果未能解决你的问题,请参考以下文章

Maven 发布:准备没有这样的提供者:'svn+ssh'

maven 发布:由于 1.7 svn 工作副本准备失败(预计 1.6)

如何更改默认 SVN 用户名和密码以提交更改?

svn用户名密码忘记了怎么修改

svn之——linux下清除svn的用户名和密码

svn 配置用户名 密码