依赖管理中的依赖关系与Maven版本插件中的依赖关系

时间:2015-07-23 10:58:41

标签: maven dependencies pom.xml parent-pom

当我使用Maven versions:display-dependency-updates检查依赖项更新时,我会得到两个结果部分。

第一名:

  

依赖关系管理中的以下依赖项更新   版本:

第二名:

  

Dependencies中的以下依赖项具有较新版本:

这两者之间的区别是什么?

1 个答案:

答案 0 :(得分:6)

POM的Dependency部分定义了项目所依赖的工件(jar,zip等)。即编译,运行等所需的工件。

POM的Dependency Management部分用于管理依赖关系信息。

例如,在下面的pom中,JUnit依赖项完全在POM的dependencyManagement部分中使用version=4.11scope = test定义。

dependency部分中,您只需使用groupIdartifactId定义JUnit依赖关系,maven会自动从dependencyManagement部分获取版本和范围。

<?xml version="1.0" encoding="utf-8"?>
<project>

    ...
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
     <dependencyManagement>

     <dependencies>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
     <dependencies>
</project>

通常,您将在父POM中定义dependencyManagement部分,您可以在其中定义所有依赖项的版本和范围。然后在子模块中,您只需使用groupIdartifactId来定义依赖关系。这允许您集中管理版本,这意味着您只需在一个地方更新它们。

所有这些都在maven文档中得到了更好的解释: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

Versions Maven Plugin只是列出了每个部分中找到的版本,因为dependencies部分可以覆盖version中定义的dependencyManagement }。section。