すべての子が同じ依存関係を宣言する場合は、代わりに親でその依存関係を宣言することをお勧めします。すべてのプロジェクトが依存関係の一貫したバージョンを使用するようにすることについては、あなたは正しいです。
同じ依存関係の異なるバージョンを使用できる場合、Maven 開発者が子プロジェクトで依存関係を宣言できるようにしたのはなぜですか? プロジェクトでローカルに宣言された依存関係の利点は、兄弟プロジェクトとは異なる場合、親がすべての子のすべての依存関係を宣言するように制限するよりも優れていると考えていたと思います。
クラス内の異なるスコープで宣言された変数のように考えてください。メソッドにプライベート変数がある場合、それは 1 つのメソッドでのみ使用されることがわかっており、コード ベース全体を心配する必要なく、必要に応じて変更できます。クラスにプライベート フィールドがある場合、他のファイルではなく、そのクラスでのすべての使用法に注意する必要があります。パブリック変数がある場合は、アイデアが得られます。依存関係は同じです。単一のプロジェクトに対して宣言されている場合、単一のプロジェクトでのみ使用/必要とされていることを確認できます。さらに、同じ親の別の子プロジェクトを構築している場合は、存在する必要はありません。
WAR を構築する場合、その通りです。異なる子プロジェクトで同じ依存関係の異なるバージョンを使用すると、最終的なアーティファクトに不満を抱く可能性があります。プロジェクト間でバージョン番号が混在していても問題にならず、実際には望ましいプロジェクト タイプとビルド サイクルがあることに注意してください。
また、maven の親 pom ファイルも親を持つことができることを忘れないでください。これにより、2 つのレベルだけでなく、より多くの層の階層が可能になります。すべての子プロジェクトが最上位の親プロジェクトの pom ファイルで依存関係を宣言する必要があるとしたら、ばかげていると思います。