0

我需要使用 maven-scm-plugin 导出/签出(默认分支)github 上的存储库。如果我在某处硬编码用户名/密码,我可以让它工作,但我不能让它使用 ssh 密钥或本地文件系统密码管理器。

在命令提示符下,我可以执行“git clone git@github.com:org/repo”或“git clone https://github.com/org/repo ”,它会完成而无需我手动重新输入用户名/密码详细信息。

在我的插件中,我可以将 connectionUrl 设置为 scm:git: https://github.com/org/repo并且我可以传递“-Dusername=foo -Dpassword=bar”。但是,我必须在某个地方拥有用户名/密码(foo/bar)在某处的纯文本中。

我已经看到了将它放在 setting.xml 中将它们作为 args 传递,并将它们放在 pom 文件中的建议。而且我找到了支持 ssh 连接的证据。但是,我找不到 ssh 连接或 https 连接的实际用途,其中您在某处没有纯文本密码。有什么建议吗?

我得到了以下工作(如果我通过 -Dusername= -Dpassword=):

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9.4</version>
<executions>
    <execution>
        <phase>generate-resources</phase>
        <goals>
            <goal>checkout</goal>
        </goals>
        <id>perform-export</id>
        <configuration>
            <!-- Would be happy to get rid of provider -->
            <providerImplementations> 
                <git>jgit</git>
            </providerImplementations>
            <!-- 
                 Want to use ssh, but cannot 
                 <connectionUrl>scm:git:ssh://github.com/org/repo</connectionUrl>
            -->
            <connectionUrl>scm:git:https://github.com/org/repo</connectionUrl>
            <exportDirectory>target</exportDirectory>
        </configuration>
    </execution>
</executions>
<dependencies>
    <dependency>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-provider-jgit</artifactId>
        <version>1.9.4</version>
    </dependency>
</dependencies>

4

1 回答 1

0

您可以将密码放在~/.netrc文件中:

machine github.com login john.smith password mypass

于 2015-06-05T12:20:41.160 回答