【问题标题】:Dependencies in Dependency Management vs Dependencies in Maven versions plugin依赖管理中的依赖与 Maven 版本插件中的依赖
【发布时间】:2015-10-13 15:24:42
【问题描述】:

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

第一个:

依赖管理中的以下依赖有更新 版本:

第二个:

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

这两者有什么区别?

【问题讨论】:

标签: maven dependencies pom.xml parent-pom


【解决方案1】:

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 部分中可以覆盖在 dependencyManagement 部分中定义的 version

【讨论】:

猜你喜欢
  • 2012-06-30
  • 2019-12-25
  • 2016-09-18
  • 1970-01-01
  • 2021-07-11
  • 2015-10-17
  • 2015-04-03
  • 1970-01-01
相关资源
最近更新 更多