Maven中依赖关系管理和依赖关系的差异

Maven中依赖关系管理和依赖关系的差异

.之间的区别是什么?dependencyManagementdependencies?我在ApacheMaven网站上看到了这些文档。项下定义的依赖项。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?为什么不直接在需要的模块中定义它呢?


天涯尽头无女友
浏览 695回答 3
3回答

慕斯709654

依赖性管理允许合并和集中管理依赖关系版本,而不添加由所有子级继承的依赖项。当您有一组项目(即不止一个)继承共同父母的。的另一个极其重要的用例dependencyManagement是在传递依赖项中使用的工件版本的控制。如果没有例子,这是很难解释的。幸运的是,文档说明了这一点。

慕容708150

我对这个问题的回答很晚了,但我认为它值得比接受的问题更清晰的回答(这是正确的,但并不强调实际的重要部分,这是你需要自己推断出来的)。在父POM中,<dependencies>和<dependencyManagement>这是:中指定的工件。<dependencies>节将始终作为子模块的依赖项包括在内。中指定的工件。<dependencyManagement>部分中也指定了子模块时,才会将它们包含在子模块中。<dependencies>子模块本身的部分。你为什么这么问?因为您在父级中指定了版本和/或作用域,所以在指定子POM中的依赖项时可以将它们排除在外。这可以帮助您对子模块的依赖项使用统一版本,而无需在每个子模块中指定版本。
打开App,查看更多内容
随时随地看视频慕课网APP