当前位置: 首页 > 知识库问答 >
问题:

如何为Maven排除继承的子依赖内部的父pom依赖?

娄嘉石
2023-03-14

我在父pom中有一个版本为2.3的Jackson,在我的子pom中我需要版本2.9,是否有任何方法排除父pom依赖?

共有1个答案

籍永安
2023-03-14

您可以使用dependencyManagement部分覆盖依赖项的版本:

 <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson</groupId>
            <artifactId>jackson-bom</artifactId>
            <version>2.8.8</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
    </dependency>
</dependencies> 

这是一个家长的例子:

<?xml version="1.0" encoding="UTF-8"?>
 <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>

<groupId>test</groupId>
<artifactId>test-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>test-child</module>
</modules>

<dependencies>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.14</version>
    </dependency>
</dependencies>

这是一个覆盖依赖版本的子版本的示例:

<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
    <artifactId>test-parent</artifactId>
    <groupId>test</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>test-child</artifactId>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
</dependencies>

这是为子级解析的依赖项

mvn dependency:tree
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------------< test:test-child >---------------------------
[INFO] Building test-child 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ test-child ---
[INFO] test:test-child:jar:1.0-SNAPSHOT
[INFO] \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.703 s
[INFO] Finished at: 2018-07-23T18:08:48+02:00
[INFO] ------------------------------------------------------------------------
 类似资料:
  • 在我的父pom xml文件中,我声明了一些在大多数孩子的pom中使用的依赖项。 然而,在一个子pom中,我不使用这些依赖项,我想找到一种方法来排除它们(为了不被视为未使用的依赖项)。 现在,在子pom的依赖部分,我什么都没有!有什么想法吗?

  • 我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中

  • 问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父

  • 我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

  • 当我在父pom中声明依赖项时,比如- 上面我已经声明了作为父pom的依赖项 现在在child pom中,我正在导入父pom- 现在看看子pom继承的依赖项,没有。jar是否应该在所有情况下都由子项目继承。因为父pom直接依赖于此jar,并且它没有被子项目传递/继承。 注意:这个问题不是关于依赖关系管理和版本的 我理解dependencyManagement,它是为了确保一组项目具有相同的依赖关系版

  • 我有一个maven工件(),它依赖于某个工件()。 有一个父pom,其中包含某些其他依赖项。 是否可以使用这些依赖项,而无需在其自身pom的依赖项部分中明确添加它们?