我正在我的项目中实现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命令的密码中的特殊字符?
答案 0 :(得分:2)
首先,将服务器元素添加到${user.home}/.m2/settings.xml
文件中。
<server>
<id>your.subversion.host</id>
<username>yourUserName</username>
<password>yourPassword</password>
</server>
maven-release-plugin
和maven-scm-plugin
。然后,将以下内容添加到POM中。 (提示:我们在公司的母公司POM中有这个。)
<project>
...
<properties>
<project.scm.id>your.subversion.host<project.scm.id>
</properties>
</project>
参考文献:maven-release-plugin FAQ和Maven settings.xml configuration。
答案 1 :(得分:0)
我在使用mvn --encrypt-password
命令和包含$
的密码时也遇到了类似的问题。解决方案是转义:
我使用mvn --encrypt-password pa$$word
代替了mvn --encrypt-password pa\$\$word
。
要确保操作系统如何处理特殊字符,请输入echo pa$$word
。