dependencyManagement
との違いは何ですかdependencies
? Apache Maven Web サイトでドキュメントを確認しました。 で定義された依存関係は、dependencyManagement
バージョンを指定せずにその子モジュールで使用できるようです。
例えば:
親プロジェクト (Pro-par) は、以下の依存関係を定義しますdependencyManagement
。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8</version>
</dependency>
</dependencies>
</dependencyManagement>
次に、Pro-par の子で、junit を使用できます。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
しかし、親 pom で junit を定義する必要があるのだろうか? 必要なモジュールで直接定義しないのはなぜでしょうか?
ベストアンサー1
私はこの質問に遅れて答えましたが、一般的な回答(正しいのですが、実際に重要な部分を強調していないため、自分で推測する必要があります)よりも明確な回答をする価値があると思います。
親 POM では、 と の主な違いは<dependencies>
次<dependencyManagement>
のとおりです。
セクションで指定された成果物は、
<dependencies>
常に子モジュールの依存関係として含まれます。セクションで指定された成果物は
<dependencyManagement>
、子モジュール自体のセクションでも指定されている場合にのみ、子モジュールに含まれます<dependencies>
。なぜそれが良いのかと疑問に思うかもしれません。それは、親でバージョンやスコープを指定し、子 POM で依存関係を指定するときにそれらを省略できるためです。これにより、各子モジュールでバージョンを指定せずに、子モジュールの依存関係に統合バージョンを使用できます。