ローカルマシンにnexusをインストールしました。pomファイルがこのリポジトリを指すようにします。カスタムリポジトリをpom.xmlファイルに追加するにはどうすればよいですか?
6 に答える
Mavenから-設定リファレンス
ダウンロードおよびデプロイメント用のリポジトリーは、POMのrepositories
および要素によって定義されます。distributionManagement
ただし、ユーザー名やパスワードなどの特定の設定は、pom.xmlと一緒に配布しないでください。このタイプの情報は、settings.xmlのビルドサーバーに存在する必要があります。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<password>my_password</password>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
...
</settings>
id:これは、Mavenが接続しようとするリポジトリ/ミラーのid要素と一致するサーバーのIDです(ログインするユーザーのIDではありません)。
ユーザー名、パスワード:これらの要素は、このサーバーへの認証に必要なログインとパスワードを示すペアとして表示されます。
privateKey、passphrase:前の2つの要素と同様に、このペアは秘密鍵(デフォルトは${user.home}/.ssh/id_dsa
)へのパスと、必要に応じてパスフレーズを指定します。パスフレーズとパスワードの要素は将来外部化される可能性がありますが、今のところ、settings.xmlファイルでプレーンテキストに設定する必要があります。
filePermissions、directoryPermissions:リポジトリファイルまたはディレクトリが展開時に作成される場合、これらは使用する権限です。それぞれの有効な値は、*nixファイルのアクセス許可に対応する3桁の数字です。664、または775。
注:秘密鍵を使用してサーバーにログインする場合は、必ず要素を省略してください。それ以外の場合、キーは無視されます。
必要なのはid
、、username
password
id
およびは、次のようURL
に定義する必要があります。pom.xml
<repositories>
...
<repository>
<id>acme-nexus-releases</id>
<name>acme nexus</name>
<url>https://nexus.acme.net/content/repositories/releases</url>
</repository>
...
</repositories>
サーバーのユーザー名とパスワードが必要な場合は、暗号化する必要があります。 Mavenパスワード暗号化
まず、Nexusの本を読むことを強くお勧めします。Mavenリポジトリマネージャーを使用する利点について説明します。
Nexusを使用するようにMavenビルドを構成する方法に関するセクションがあります。
これにより、なぜPOMファイルを変更するのか疑問に思います。あなたが本当にやりたいのは、Nexusをリモートリポジトリミラーとして設定することだと思います。これは、Maven設定ファイルで行われます。
以下は、Mavenが( Maven Centralの代わりに)デフォルトのリポジトリとしてNexusを使用することを示しています。
<settings>
..
..
<mirrors>
<mirror>
<id>nexus</id>
<url>http://localhost:8081/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
Nexusリポジトリは、Centralから取得したアーティファクトをキャッシュするように構成されているため(ビルドパフォーマンスに適しています)、これは望ましい動作です。
ノート:
- 「パブリック」リポジトリグループには、Nexusインスタンスによってプロキシされる他のリポジトリ(Maven Centralだけでなく)を含めることができます。すべてのリポジトリ管理を一元化するため、この動作が必要になる可能性があります。組織外の人にとって、ビルドの移植性が低下するだけです。
ここでの回答は、Nexusサーバーに複数のユーザーがいて、Jenkinsのような自動ビルド(CI)システムを使用するとともに、ユーザーIDに基づくプロジェクトベースの分離(保護)があるエンタープライズユースケースをサポートしていないようです。さまざまなプロジェクトに必要なさまざまなユーザーIDを満たすためのsettings.xmlファイルを作成することはできません。プロジェクトがプロジェクト固有の汎用ユーザーIDをpom.xmlに格納できない限り、リポジトリを読み取るための匿名アクセスにNexusを開く以外に、これを解決する方法がわかりません。
<project>
...
<repositories>
<repository>
<id>my-internal-site</id>
<url>http://myserver/repo</url>
</repository>
</repositories>
...
</project>
「ダウンロードとデプロイのリポジトリは、POMのリポジトリとdistributionManagement要素によって定義されます。ただし、ユーザー名やパスワードなどの特定の設定は、pom.xmlと一緒に配布しないでください。このタイプの情報は、のビルドサーバーに存在する必要があります。 settings.xml。」-ApacheMavenサイト-設定リファレンス
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<password>my_password</password>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
ファイルが不要な場合、またはファイルを変更できない場合はsettings.xml
、プロジェクトのルートに新しいファイルを作成し、mavenを呼び出して、-s
引数を指定してパラメーターとして渡すことができます。
$ mvn COMMAND ... -s settings.xml
Maven設定リファレンスから、ユーザー名/パスワードをpom.xmlに入れることはできません
ダウンロードおよびデプロイメント用のリポジトリーは、POMのリポジトリーおよびdistributionManagement要素によって定義されます。ただし、ユーザー名やパスワードなどの特定の設定は、pom.xmlと一緒に配布しないでください。このタイプの情報は、settings.xmlのビルドサーバーに存在する必要があります。
最初にpomにリポジトリを追加してから、$ MAVEN_HOME / conf/settings.xmlにユーザー名/パスワードを追加できます。
<servers>
<server>
<id>my-internal-site</id>
<username>yourUsername</username>
<password>yourPassword</password>
</server>
</servers>