Maven发布插件无法解析具有特殊字符的密码

时间:2013-09-05 15:37:15

标签: svn maven maven-release-plugin

我正在我的项目中实现Maven发布插件,以自动化我们的发布过程。 但是release-prepare任务无法通过此错误检查代码和错误

authorization failed: Could not authenticate to server: rejected Basic challenge

我尝试了http://mszalbach.blogspot.in/2011/02/maven-release-plugin-and-commit_05.html中提到的所有步骤但没有效果。

我能够通过命令行成功运行所有svn命令。

我很确定我的svn网址很好,因为我可以在同一个pom中使用maven scm插件检查代码。

有关如何解决此问题的任何建议?

编辑:

我刚刚意识到release:prepare使用缓存的用户名/ passwd成功运行。但是,如果我通过-Dusername=testUser -Dpassword=passwd给同一个用户,那么它就失败了。凭证是正确的。我在传递参数时遗漏了什么吗?

EDIT2:

我发现了这个问题,我的密码以$符号开头,maven没有正确解析它,这就是为什么会出现这个问题。如何处理运行maven命令的密码中的特殊字符?

2 个答案:

答案 0 :(得分:2)

首先,将服务器元素添加到${user.home}/.m2/settings.xml文件中。

<server>
    <id>your.subversion.host</id>
    <username>yourUserName</username>
    <password>yourPassword</password>
</server>
  • 如果您将id设为subversion主机(例如subversion.mycompany.com),则此设置将同时适用于maven-release-pluginmaven-scm-plugin
  • 您可以在directions
  • 之后加密密码

然后,将以下内容添加到POM中。 (提示:我们在公司的母公司POM中有这个。)

<project>
   ...
    <properties>
      <project.scm.id>your.subversion.host<project.scm.id>
    </properties>
</project>

参考文献:maven-release-plugin FAQMaven settings.xml configuration

答案 1 :(得分:0)

我在使用mvn --encrypt-password命令和包含$的密码时也遇到了类似的问题。解决方案是转义:

我使用mvn --encrypt-password pa$$word代替了mvn --encrypt-password pa\$\$word

要确保操作系统如何处理特殊字符,请输入echo pa$$word