【问题标题】:Maven release plugin fails to parse password with special characterMaven 发布插件无法解析带有特殊字符的密码
【发布时间】:2013-09-09 12:52:11
【问题描述】:

我正在我的项目中实现 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 url 没问题,因为我可以在同一个 pom 中使用 maven scm 插件检查代码。

关于如何解决这个问题的任何建议?

编辑:

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

EDIT2:

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

【问题讨论】:

    标签: svn maven maven-release-plugin


    【解决方案1】:

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

    我使用mvn --encrypt-password pa\$\$word 代替mvn --encrypt-password pa$$word 来使其工作。

    要确定您的操作系统如何处理特殊字符,请键入 echo pa$$word

    【讨论】:

      【解决方案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

      【讨论】:

      • 谢谢,这很有帮助。但我热衷于传递用户名、密码作为参数。我刚刚意识到 release:prepare 使用缓存的用户名/密码成功运行。但是如果我通过 -Dusername=testUser -Dpassword=passwd 给同一个用户,那么它会失败。凭据是正确的。这里有任何线索吗?
      • RE:您的编辑 2. 问题不是 Maven,而是您的操作系统在解释“$”。尝试使用操作系统转义特殊字符的方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2020-02-07
      • 2020-10-05
      • 2021-10-12
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多