Maven scm标记和凭据 - 同一主机上的多个帐户

时间:2016-05-28 08:22:25

标签: maven

在使用GitHub或Bitbucket这样的网站时,在这些网站上拥有多个帐户并不罕见。

我通常会将我的凭据放入系统范围settings.xml,例如

<settings>
  <servers>
    <server>
      <id>github.com</id>
      <username>user1</username>
      <password>mysecret</password>
    </server>

这将适用于标准Maven&lt; scm&gt; POM中的部分。 <developerConnection>中的域名将与来自settings.xml文件中相应服务器的<id>匹配。宾果!

但是,如果我在同一个域中拥有多个帐户,该怎么办? (并且仍然希望凭据位于settings.xml)。我无法理解Maven将如何进行匹配。 <scm>部分中的我的网址包含&#34; username @ host&#34;符号所以肯定Maven会有足够的信息在settings.xml中进行适当的匹配。

我已经尝试了以下格式,在我看来,Maven将支持这种格式:

<settings>
  <servers>
    <server>
      <id>user1@github.com</id>
      <username>user1</username>
      <password>mysecret</password>
    </server>
    <server>
      <id>user2@github.com</id>
      <username>user2</username>
      <password>mysecret</password>
    </server>

    <!-- default if no username in scm section -->
    <server>
      <id>github.com</id>
      <username>user1</username>
      <password>mysecret</password>
    </server>

但那不起作用。

关于如何做到这一点的任何想法?

当然,我不能成为世界上第一个在同一个VCS主机上拥有多个帐户......并且使用Maven的人。

更新

我已审核了Maven SCM Plugin的代码。我上面写的内容完全没有支持。今天发生的事情是将<id>标记与SCM URL中给出的主机名部分进行匹配。比较严格,即使不区分大小写。如果在网址中提供了端口号,那么也包含该端口号,并且必须与<id>标记匹配,例如myhost:8080

我已就此问题创建了Enhancement Request (SCM-826)

1 个答案:

答案 0 :(得分:0)

我建议您通过SSH进行身份验证。如果user1和user 2具有相同的公钥,则可以在没有settings.xml文件

的情况下对其进行身份验证