外部化供应链管理的凭据使用Maven(Externalising SCM credentials w

2019-06-18 06:31发布

是否有外部化我的SCM凭据,以便它们不存储在项目的POM的方法? 是如果他们包含在项目的POM的问题,他们将是可见的,当所有部署项目。

Answer 1:

这可以为众多的SCM供应商来完成,我认为颠覆基于您的代码中实现。

您可以在$的user.home定义你的Subversion设置/ .scm / SVN-settings.xml中(或[行家家居】/conf/.scm/svn-settings.xml,虽然这意味着他们仍然是可见的用户系统)

在该文件中,你可以为Subversion服务器设置用户名和密码。 该文件内容应该是这样的:

<svn-settings>
  <user>[svn user]</user>
  <password>[svn password]</password>
</svn-settings>

您可以定义在配置文件中的一些其他属性。 欲了解更多详情,请参阅的“提供程序配置”部分颠覆SCM页 。

其他的SCM供应商也有类似的做法,例如在CVS的设置存储在CVS-settings.xml中在相同的位置(.scm文件夹),看到CVS SCM页面了解详情。



Answer 2:

对于一些SCM供应商可以在指定的凭证<servers>的部分settings.xml 。 作为<id>使用存储库的域名。 这对我的作品有水银。 颠覆的作品了。

例如,考虑到我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>

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

<server>
  <id>jukito.googlecode.com</id>
  <username>philippe.beaudoin</username>
  <password>1234567890ABC</password>
</server>


Answer 3:

我意识到这个问题是老问题的答案被接受,但为了完整起见,谨提供以下选择,这可能会在某些情况下是首选。

动机

它因此有时会发生在同一台服务器被用于多种用途,这就需要不同的用户凭据。 例如,它是用于承载的Nexus驱动Maven仓库以及具有对于同一用户的不同凭据的SVN服务器。 在这样的情况下,将需要数<server>用相同的条目idusername ,但不同的password 。 然而,这是不可行的。

行家释放插件支持的标志usernamepassword ,可以提供作为部分release:preparerelease:perform命令。 对于价值usernamepassword应符合相应的SVN凭据。

mvn release:prepare -Dusername=[username] -Dpassword=[password] 


Answer 4:

我已经成功地得到这个通过以上即增加一个新的服务器配置,以我的settings.xml,并给予域名作为ID提供的解决方案的工作。

<server>
  <id>domain.name:port</id>
  <username>[username]</username>
  <password>[password]</password>
</server>

除了前面的答案,如果你在你的URL指定端口,这也需要包括在server.id。 我发现了另一个怪癖是,你需要加上引号的密码,如果它包含可能与命令行调用任何干扰字符。

你不能使用你的$的user.home / .scm / SVN-settings.xm以下,因为它是无效的! 不存在这样的元素作为<user><password><svn-settings> (如指定此处 )

<svn-settings>
  <user>[svn user]</user>
  <password>[svn password]</password>
</svn-settings>


文章来源: Externalising SCM credentials with Maven