依赖管理和maven中的依赖关系之间的差异

dependencyManagementdependencies什么区别? 我在Apache Maven网站上看到了这些文档。 似乎可以在其子模块中使用在dependencyManagement下定义的dependencyManagement ,而无需指定版本。

例如:

父项目(Pro-par)在dependencyManagement下定义依赖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? 为什么不直接在需要的模块中定义?


依赖管理允许整合和集中依赖版本的管理,而无需添加所有子节点继承的依赖关系。 当你有一组继承公共父项目的项目 (即多个项目 )时,这是特别有用的。

另一个非常重要的dependencyManagement用例是对传递依赖中使用的工件版本的控制。 没有一个例子,这很难解释。 幸运的是,这在文档中有所说明。


我对这个问题迟迟没有采取行动,但我认为它比接受的更为明确(这是正确的,但没有强调你需要推断出的实际重要部分)。

在父POM中, <dependencies><dependencyManagement>之间的主要区别是:

<dependencies>部分中指定的工件将始终作为子模块的依赖项包含在内。

在指定的工件<dependencyManagement>部分,将只被包括在子模块中,如果他们在还指定<dependencies>子模块本身的部分。 你问为什么好? 因为您在父级中指定了版本和/或作用域,并且可以在指定子POM中的依赖关系时将其忽略。 这可以帮助您将统一版本用于子模块的依赖关系,而无需在每个子模块中指定版本。


就像你说的那样; dependencyManagement用于将所有依赖信息提取到一个公共的POM文件中,从而简化了子POM文件中的引用。

当您有多个不想在多个子项目下重新输入的属性时,它会变得很有用。

最后,可以使用dependencyManagement来定义要在多个项目中使用的工件的标准版本。

链接地址: http://www.djcxy.com/p/5045.html

上一篇: differences between dependencymanagement and dependencies in maven

下一篇: Maven: add a dependency to a jar by relative path