使用Maven外部化SCM凭据

Kin*_*ick 33 svn version-control maven-2 maven-scm

是否有一种外部化我的SCM凭证的方法,因此它们不存储在项目的POM中?问题是如果它们包含在项目的POM中,那么在部署项目时,所有人都可以看到它们.

Phi*_*oin 59

对于某些SCM提供商,您可以在以下<servers>部分中指定您的凭据settings.xml.作为<id>使用存储库的域名.这对我来说很有用.SubVersion也有效.

例如,鉴于我的pom.xml包含:

<scm>
  <connection>scm:hg:http://jukito.googlecode.com/hg/</connection>
  <developerConnection>scm:hg:https://jukito.googlecode.com/hg/</developerConnection>
  <url>http://code.google.com/p/jukito/source/browse/</url>
</scm>
Run Code Online (Sandbox Code Playgroud)

然后我可以这样指定我的凭据settings.xml:

<server>
  <id>jukito.googlecode.com</id>
  <username>philippe.beaudoin</username>
  <password>1234567890ABC</password>
</server>
Run Code Online (Sandbox Code Playgroud)

  • @JörnHorstmannmaven参考书的附录A.2.2中对此进行了描述,请参阅http://www.sonatype.com/books/mvnref-book/reference/appendix-settings-sect-details.html#appendix-settings-教派的服务器 (4认同)
  • 请注意,这也适用于使用ssh的git。就我而言,对于&lt;developerConnection&gt;我使用:`scm:git:ssh://git@bitbucket.org/ {account} / {project}`,然后在我的settings.xml中使用`&lt;id&gt; bitbucket.org &lt;/ id&gt; &lt;privateKey&gt; /c/Users/neil.hunt/.ssh/id_rsa &lt;/ privateKey&gt;` (2认同)

01e*_*1es 20

我意识到这个问题已经过时,答案已被接受,但为了完整起见,我想提供以下备选方案,在某些情况下可能更为可取.

动机

有时会发生同一服务器用于多种目的,这需要不同的用户凭据.例如,它用于托管Nexus驱动的Maven存储库以及为同一用户具有不同凭据的SVN服务器.在这样的情况下,将需要数<server>项与同idusername,但不同的password.然而,这是不可行的.

行家释放插件支持的标志usernamepassword可作为的一部分来提供release:preparerelease:perform命令.值usernamepassword应该与相应的SVN凭证匹配.

mvn release:prepare -Dusername=[username] -Dpassword=[password] 
Run Code Online (Sandbox Code Playgroud)

  • 最好在命令上传递这些信息,因为任何人都可以查看runnignprocesses以获取您的凭据. (6认同)

Ric*_*ler 6

这可以为许多SCM提供者完成,我假设Subversion是基于您的标记的实现.

您可以在$ user.home/.scm/svn-settings.xml(或[maven home] /conf/.scm/svn-settings.xml)中定义Subversion设置,但这意味着它们仍然可供用户看到系统)

在该文件中,您可以设置Subversion服务器的用户名和密码.文件内容应如下所示:

<svn-settings>
  <user>[svn user]</user>
  <password>[svn password]</password>
</svn-settings>
Run Code Online (Sandbox Code Playgroud)

您可以在该配置文件中定义一些其他属性.有关更多详细信息,请参阅Subversion SCM页面的"提供程序配置"部分.

其他SCM提供程序也有类似的方法,例如在CVS中,设置存储在cvs-settings.xml中的相同位置(.scm文件夹),有关详细信息,请参阅CVS SCM页面.

  • 嗨Rich,你的建议不起作用(至少对我而言).此外,在您的链接上没有关于用户名和密码...所以,必须有另一个解决方案...... (2认同)