すべての子が同じ依存関係を宣言している場合は、代わりにその依存関係を宣言することをお勧めします。すべてのプロジェクトが一貫したバージョンの依存関係を使用するように、これについて正しいです。
なぜMavenの開発者は、同じ依存関係の異なるバージョンを使用できるようにすると、子プロジェクトで依存関係を宣言することを許可したのですか?私は彼らがローカルで宣言されたプロジェクトの依存関係の利点を、兄弟プロジェクトとは異なると考えていると思っていたのですが、すべての子どものすべての依存関係を宣言するように親を制限するよりもうまくいきました。
クラス内の異なるスコープで宣言された変数のように考えてください。あるメソッドにプライベート変数がある場合、それはそのメソッドでのみ使用されており、コードベース全体を心配する必要なしに適切に変更することができます。クラスにプライベートフィールドがある場合は、そのクラスのすべての用途を認識する必要がありますが、他のファイルには認識されません。あなたが公共の変数を持っているなら、あなたはそのアイデアを得るでしょう。依存関係は同じですが、1つのプロジェクトに対して宣言されている場合は、単一のプロジェクトでのみ使用/必要があることがわかります。さらに、同じ親の異なる子プロジェクトを構築する場合は、存在する必要はありません。
あなたがWARを構築するのは正しいですが、異なる子プロジェクトで同じ依存関係の異なるバージョンを使用すると、おそらく最終的な成果物を悲しんでしまうでしょう。他のプロジェクトタイプとビルドサイクルがあることに注意してください。プロジェクト間でバージョン番号が混在していて問題にならず、実際には必要な場合があります。
親のpomファイルにも親があることを覚えておいてください。これにより、階層のレベルを2レベル以上にすることができます。すべての子プロジェクトがトップレベルの親プロジェクトのpomファイルの依存関係を宣言しなければならないのはばかげていると思います。
親のpomが依存関係の完全な定義(すなわちバージョン番号を含む)を持ち、サブプロジェクトが依存関係を単に "リスト"して、親がバージョンを指示できるようにすると、 。 – rk2010
このプラクティスがより奨励されればいいと思うが、それは強制すべきだと言っても過言ではないかと思う。 Mavenは、多くの場合、何かを達成するためのさまざまな方法を提供します。私は、複数のプロジェクトが同じ依存関係の異なるバージョンを参照している場合、ビルドに警告が表示されると思うので、潜在的に悪い可能性のあることをしているならあなたの顔にあるでしょう。 –