gpt4 book ai didi

java - Maven - 父级和导入范围内的依赖管理

转载 作者:行者123 更新时间:2023-11-30 11:04:27 25 4
gpt4 key购买 nike

设置如下:

我正在使用 Maven,我想将一些在 dependencyManagement 部分具有许多依赖项的 Artifact 用作父 POM。但我也希望在我的 POM 中有一个 dependencyManagement 部分,因为我的 Artifact 将是其他一些子模块的父 pom。

例子:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.mycompany</groupId>
<artifactId>parent-pom</artifactId>
<version>1.0</version>
</parent>

<groupId>com.mycompany</groupId>
<artifactId>my-artifact</artifactId>
<version>1.0-SNAPSHOT</version>

<modules>
<module>sub-module-01</module>
<module>sub-module-02</module>
</modules>

<packaging>pom</packaging>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>

假设这两个父 poms 都为某些依赖项定义了一个版本(假设是 jackson 的版本),但每个都有不同的版本。

当我在我的一个子模块中定义该依赖项时,将解析哪个版本?

我不确定如何在 google 上搜索这种情况。

最佳答案

通常,Maven 使用最接近的版本声明进行解析。

我最好的猜测是依赖项管理部分中导入的那个会是首选,因为它更接近使用依赖项的位置:

  • 依赖 -> 在父 pom 中导入依赖 = 2 跳
  • 依赖 -> 父 pom -> 父 pom 中的 dependencyManagement = 3 跳

但真的,试试吧 ;)

关于java - Maven - 父级和导入范围内的依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30012232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com