ビルド サーバーで共有認証システムをセットアップしようとしています。私たちが持っているさまざまなチームに関して展開を行う方法を宣言するいくつかの Maven プロジェクトがあります (各チームには独自の認証ユーザー/パスワードがあります)。
<profile>
<id>release-profile</id>
<distributionManagement>
<repository>
<id>rep-releases</id>
<name>rep-releases</name>
<url>http://somewhere-releases</url>
</repository>
<snapshotRepository>
<id>rep-snapshots</id>
<name>rep-snapshots</name>
<url>http://somewhere-snapshots</url>
</snapshotRepository>
</distributionManagement>
</profile>
次に、settings.xml で、宣言されたサーバーへの認証を次のように宣言します。
<servers>
<server>
<id>rep-releases</id>
<username>${release.user.name}</username>
<password>${release.user.password}</password>
</server>
<server>
<id>rep-snapshots</id>
<username>${release.user.name}</username>
<password>${release.user.password}</password>
</server>
</servers>
最後に、デプロイしたいプロジェクトに応じて、ビルド サーバーの settings.xml にいくつかのプロファイルを定義します。
<profile>
<id>dep-team1</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<release.user.name>team1-user</release.user.name>
<release.user.password>team1-password</release.user.password>
</properties>
</profile>
問題は、プロジェクトのデプロイを行うときに、次のような認証エラー (HTTP 401) が発生したことです。
Error deploying artifact: Failed to transfer file: http://......./my-project-0.2-20090423.123247-3.pom. Return code is: 401
プロパティをチームのユーザー/パスワードに置き換えてサーバー認証を変更すると、すべて正常に機能します。
タグ <servers><server> は値をプロパティとして受け入れませんか?
同じことを達成するために、他の人はビルドシステムをどのようにセットアップしますか?
ご協力いただきありがとうございます。
編集:私は hudson を使用しています。私にとっての解決策は、maven2 を数回インストールし、各チームの設定 (ユーザー/パスワードを除く) を複製し、各プロジェクトを適切な Maven インストールに関連付けることです。このソリューションが私を魅了しないことを認めなければなりません...