在我的案例中如何确定工件版本

问题描述 投票:0回答:1

在我的父pom中,我定义了一个依赖管理条目,它包含一个google guava神器

    <dependencyManagement>
       <dependencies>
          <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>32.1.3-jre</version>
          </dependency>
        </dependencies>
    </dependencyManagement>

child pom
中,有3种情况,我想问每种情况孩子使用哪个版本。

  1. 没有声明版本,因此它将使用依赖管理中定义的父级番石榴版本?答案应该是肯定的,这就是使用 dependencyManagement 的主要目的。
       <dependencies>
          <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </dependency>
        </dependencies>

  1. 版本已声明且低于在 dependencyManagement 中定义的父级 guava 版本,在这种情况下,子级将使用哪个版本? 32.1.3-jre 还是 32.1.2-jre?
       <dependencies>
          <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>32.1.2-jre</version>
          </dependency>
        </dependencies>

  1. 版本已声明且高于在 dependencyManagement 中定义的父级 guava 版本,在这种情况下,子级将使用哪个版本? 32.1.3-jre 还是 32.1.4-jre?
       <dependencies>
          <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>32.1.4-jre</version>
          </dependency>
        </dependencies>

java maven
1个回答
0
投票

您可以通过为项目生成有效的 pom.xml 来验证这一点。 Maven 的依赖调解使用依赖的“最近定义”。

情况 1:此处仅指定组和工件 ID。因此,Maven 从 dependencyManagement 部分中最近的定义中选择依赖项版本。

情况2和3:版本是否高于/低于指定版本。其他地方对于 Maven 来说没有任何意义。组、工件 ID 和版本均在依赖项部分本身中指定。因此,将使用此版本,而不是 dependencyManagement 部分中指定的版本。

© www.soinside.com 2019 - 2024. All rights reserved.