Maven における dependencyManagement と依存関係の違い 質問する

Maven における dependencyManagement と依存関係の違い 質問する

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 で依存関係を指定するときにそれらを省略できるためです。これにより、各子モジュールでバージョンを指定せずに、子モジュールの依存関係に統合バージョンを使用できます。

おすすめ記事