web-dev-qa-db-ja.com

リポジトリが親pomで構成されている場合、pomはどのようにして親pomを見つけますか?

さまざまなプロジェクトのすべてのリポジトリ構成を、リポジトリや配布管理などの単一の構成ポイントを持つという特定の目的のために作成した親pomにリファクタリングしました。私が理解しているように、これはベストプラクティスになるはずです。親pomをnexusサーバーにデプロイしてから、子プロジェクトを実行しようとしました。彼らは私の親のpomを見つけることができません。 。 。親のpomがないと、ネクサスリポジトリについて知らないので、この種のことは私には理にかなっています。 。 。鶏が先か卵が先か?明らかな何かが欠けていますか?

19
chad

プロジェクトは、依存関係をダウンロードするためにリポジトリを見つける場所を知る必要があるのは事実です。ただし、外部リポジトリに移動する前に、Mavenはローカルリポジトリをチェックして、必要なアーティファクトがそこにあるかどうかを確認します。ローカルリポジトリに親pomが含まれていますか?そうでない場合は、実行して追加できます

mvn install

親pomに。この問題は、ローカルのpomをバイパスして、親pomをNexusに直接デプロイしたことが原因である可能性があります。を使用して展開することにより、将来これを回避できます

mvn deploy

これにより、最初にアーティファクトがローカルにインストールされ、次に外部リポジトリ(この場合はNexus)にデプロイされます。詳細はこちら: http://maven.Apache.org/guides/introduction/introduction-to-the-lifecycle.html

親pomが他の人によって構築および展開される状況にある場合、これは役に立ちません。プロジェクトのpomまたはローカルのsettings.xmlでリポジトリを指定できます。一般的なアプローチは、すべての開発者が、他のすべてのリポジトリのミラーとして使用して、Nexusリポジトリを指すリポジトリ定義をローカルのsettings.xmlに含めることを期待することです。次に、Nexusで必要な各外部リポジトリを構成し、必要な依存関係を取得できるようにします。私はNexusに精通していませんが、ミラーリングの詳細については、こちらをご覧ください: http://maven.Apache.org/guides/mini/guide-mirror-settings.html

10
Conan

各子(Mavenモジュール)のリポジトリ定義を維持する必要があります。これは、ビルドプロセスの主なベストプラクティスです:「ビルドをポータブルにする」。

すべての開発者/システムは、親モジュールまたは他のモジュールへのソース依存関係なしで、リポジトリ参照のみを使用してモジュールを構築できる必要があります。

4
alexfdz