web-dev-qa-db-ja.com

MavenによるSCM資格情報の外部化

プロジェクトのPOMに格納されないようにSCM資格情報を外部化する方法はありますか?問題は、それらがプロジェクトのPOMに含まれている場合、プロジェクトがデプロイされるときにすべてに表示されます。

33
Kingamajick

これは、多くの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ページ の「プロバイダー設定」セクションを参照してください。

他のSCMプロバイダーにも同様のアプローチがあります。たとえば、CVSでは、設定は同じ場所(.scmフォルダー)のcvs-settings.xmlに保存されます。詳細は CVS SCMページ を参照してください。

6
Rich Seller

一部のSCMプロバイダーでは、<servers>settings.xmlセクションで資格情報を指定できます。 <id>として、リポジトリのドメイン名を使用します。これは私にとってMercurialで機能します。 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>
59

この質問は古く、回答は受け入れられることを理解していますが、完全を期すために、次の代替案を提供したいと考えています。

動機

そのため、同じサーバーがいくつかの目的で使用され、異なるユーザー資格情報が必要になる場合があります。たとえば、同じユーザーに対して異なる資格情報を持つSVNサーバーだけでなく、Nexus駆動のMavenリポジトリーをホストするために使用されます。このような場合、idusernameは同じでpasswordが異なる複数の<server>エントリが必要になります。ただし、これは実行可能ではありません。

解決

Mavenリリースプラグインは、release:prepareおよびrelease:performコマンドの一部として提供できるフラグusernameおよびpasswordをサポートしています。 usernameおよびpasswordの値は、それぞれのSVN資格情報と一致する必要があります。

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

上記のソリューションを使用してこれを機能させることができました。つまり、新しいサーバー構成をsettings.xmlに追加し、ドメイン名をIDとして指定しました。

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

前の回答に加えて、URLでポートを指定している場合、これもserver.idに含める必要があります。私が見つけたもう1つの癖は、コマンドラインの呼び出しを妨害する可能性のある文字がパスワードに含まれている場合は、パスワードを引用符で囲む必要があることです。

以下は$ user.home/.scm/svn-settings.xmで有効ではないため使用できません! <user>の下に<password><svn-settings>などの要素はありません(指定どおり here

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