1

質問:

Maven アーティファクト リポジトリを (Artifactory の他のインスタンスまたは nexus などから) インポートする場合、多くのアーティファクト (およびほとんどの親) の pom には、古いリポジトリを参照する url タグが含まれています。distributionManagementこれらの URL タグは タグとタグ内にありrepositoriesます。

すべてのアーティファクト (および該当する場合は親 pom) に対してこれらの URL を更新するという時間のかかるプロセスを実行する必要がありますか?

さらに詳しい情報:

一部のアーティファクト リポジトリをまったく新しい環境に移行中です。新しい環境で単一の Artifactory インスタンスに移行する必要がある別のプロジェクトの古い Artifactory インスタンスと Nexus インスタンスがあります。現在、Nexus リポジトリから Maven ビルドを実行するためのアクセス権はありません。アーティファクトをプルするためのファイル システムへのアクセス権しか与えられていません。

Artifactory の新しいバージョンは古いバージョンよりも新しいため、次のプロセスを使用しました。

1. system export excluding binaries
2. copy filestore directory across to new Artifactory server
3. imported the system export

Nexus では、各リポジトリのファイルシステムを新しい Artifactory サーバーに再同期し、「パスからリポジトリをインポート」機能を使用しています。

これらのインポートはすべて正常に終了し、新しい Artifactory インスタンスで必要なすべてのアーティファクトを確認できます。

古い Artifactory インスタンスからインポートされた依存関係をプルダウンする Maven ビルドを正常に実行し、この同じビルドで成果物を新しい Artifactory インスタンスにも正常に発行しました。

これまでの成功したテストを考えると、本当にそれらを更新する必要があるのか​​ 、それとも後で何らかの理由で問題になるのか(古い Artifactory インスタンスを廃止するときなど)はわかりません。

4

2 に答える 2

3

新しい環境でArtifactoryを使用できて幸運です:)

Artifactory はpom ファイルからすべての参照を自動的に削除し<repositories>、解決ルールはsettings.xml. 新しい Artifactory から新しいファイルを生成するsettings.xmlだけで、すべての解決がそこから行われます。

これを機能させるには、古い Artifactory と Nexus を新しい Artifactory インスタンスのリモート リポジトリとして宣言してください (エクスポート/インポートは使用しないでください)。新しい Artifactory が古い Artifactory または Nexus からアーティファクトをフェッチすると、リポジトリ宣言が削除され、新しいクリーンな pom がキャッシュに保存されます。しばらくしてすべてがキャッシュされたことを確認したら、古いサーバーを廃止し、それらのリポジトリをオフラインとして宣言できます (必要に応じてアーティファクトをローカル リポジトリに移動します)。

于 2013-10-23T07:50:13.283 に答える
1

リポジトリもdistribitionManagementもコンポーネントの使用に影響を与えないため、インポート時に何もする必要はありません.

コンポーネントがリリースされるディストリビューション管理の詳細。コンポーネントはすでにリリースされており、レポ サーバー内にあるため、コンテンツは重要ではありません。

pom ファイルの要素としてリポジトリを使用することは、非常に悪い習慣であり、避ける必要があります。ただし、レポ マネージャーを使用していて、settings.xml で mirrorOf セットアップを使用して適切な設定を行っている場合、どのレポジトリも考慮されませんが、代わりに、settings.xml で定義されているようにレポ マネージャーに連絡します。

ご覧のとおり、コンポーネントを移行してそのままにしておくことができます。すでにリリースされているコンポーネントの pom を変更することは、おそらく悪い習慣です。これは、一部のクライアントが 1 つの pom を持ち、他のクライアントが同じアーティファクトに対して別の pom を持つことを意味するためです。これは、変更されないリリース アーティファクトの考え方に違反し、問題を引き起こす可能性があります。

また、移行に関しては、Nexus のリポジトリを簡単に移行し、古いサーバーの電源を切ることができます (少なくとも Nexus に移行できます)。そうすれば、多数のコンポーネントを並行して実行する必要がなく、すぐに廃止できます。同時に、すべてのコンポーネントが新しいレポ マネージャーにあることを確認できます。

于 2013-10-24T05:03:53.373 に答える