【发布时间】:2010-11-18 08:12:12
【问题描述】:
有没有一种方法可以将我的 SCM 凭据外部化,这样它们就不会存储在项目的 POM 中?问题是如果它们包含在项目的 POM 中,那么在部署项目时它们将对所有人可见。
【问题讨论】:
标签: svn version-control maven-2 maven-scm
有没有一种方法可以将我的 SCM 凭据外部化,这样它们就不会存储在项目的 POM 中?问题是如果它们包含在项目的 POM 中,那么在部署项目时它们将对所有人可见。
【问题讨论】:
标签: svn version-control maven-2 maven-scm
对于某些 SCM 提供商,您可以在 settings.xml 的 <servers> 部分指定您的凭据。作为<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>
然后我可以在settings.xml 中指定我的凭据:
<server>
<id>jukito.googlecode.com</id>
<username>philippe.beaudoin</username>
<password>1234567890ABC</password>
</server>
【讨论】:
scm:git:ssh://git@bitbucket.org/{account}/{project},然后在我的 settings.xml 中我使用 <id>bitbucket.org</id><privateKey>/c/Users/neil.hunt/.ssh/id_rsa</privateKey>我已经设法通过使用上面提供的解决方案来实现这一点,即将新的服务器配置添加到我的 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 中使用以下内容,因为它无效! <svn-settings>下没有<user>和<password>这样的元素(指定here)
<svn-settings>
<user>[svn user]</user>
<password>[svn password]</password>
</svn-settings>
【讨论】:
我意识到这个问题已经过时并且答案已被接受,但为了完整起见,我想提供以下替代方案,这在某些情况下可能是首选。
有时会发生同一台服务器用于多种用途的情况,这需要不同的用户凭据。例如,它用于托管 Nexus 驱动的 Maven 存储库以及对同一用户具有不同凭据的 SVN 服务器。在这种情况下,需要有多个<server> 条目具有相同的id 和username,但不同的password。然而,这是不可行的。
Maven 发布插件支持标志username 和password,可以作为release:prepare 和release:perform 命令的一部分提供。 username 和 password 的值应与各自的 SVN 凭据匹配。
mvn release:prepare -Dusername=[username] -Dpassword=[password]
【讨论】:
这可以为许多 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>
您可以在该配置文件中定义一些其他属性。有关详细信息,请参阅Subversion SCM page 的“提供程序配置”部分。
其他 SCM 提供程序也有类似的方法,例如在 CVS 中,设置存储在同一位置(.scm 文件夹)的 cvs-settings.xml 中,有关详细信息,请参阅CVS SCM page。
【讨论】: