maven - 如何排除 Maven 继承的子依赖项中的父 pom 依赖项?

标签 maven maven-2 maven-3 maven-plugin maven-assembly-plugin

我在父 pom 中有一个版本为 2.3 的 Jackson,在我的子 pom 中我需要版本 2.9,有什么方法可以排除父 pom 依赖项吗?

最佳答案

您可以使用 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] ------------------------------------------------------------------------

关于maven - 如何排除 Maven 继承的子依赖项中的父 pom 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476017/

相关文章:

java - Maven是否应该为不同的应用服务器打包不同的WAR?

maven-2 - 除了工件之外,如何交付属性文件?

java - CDI Weld 忽略排除项

maven - Jenkins 不能用 Maven 构建。可能是代理问题

maven - 在 Maven 中配置 Javadoc 聚合

maven-2 - 如何将 Gradle 项目发布到范围为 'optional' 和 'provided' 的 Maven 存储库?

maven-2 - Maven 命令列出生命周期阶段以及绑定(bind)目标?

maven - 从 MavenProject 获取 project.build.directory?

java - Maven 3.2.1 + Hibernate 4.3.4 - 无法构建实体管理器工厂 - 由 : ParameterizedTypeImpl cannot be cast to java. lang.Class 引起

maven - 在多个 POM 文件之间共享依赖项