首页 > 解决方案 > 春季启动版本 - 如何覆盖我们想要的?

问题描述

我有spring项目,这是一个多模块项目,它使用spring boot(test/pom.xml;和api/pom.xml)

test/pom.xml 具有以下引导:

<spring.boot.version>2.0.6.RELEASE</spring.boot.version>

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>${spring.boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
 </dependency>

jackson-core 的版本是 --> 2.9.0.7

模块的 (api) pom.xml (片段,显示 Spring Boot 依赖项)

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

可以看出,我试图从 spring boot 中排除 jackson-xxx。

现在,我有一个 jar,比如 a.jar,它具有显式依赖项(具有特定版本的 jackson -> 2.9.0.8);以及我添加到我的 api/pom.xml 的依赖项(上面未显示)

现在,当我看到哪个版本的 jackson-core, jackson-databind 被解析时;它需要版本-> 2.9.0.7(它是弹簧靴的一部分;但是我试图排除它)。

谁能帮我理解为什么会发生这种情况,以及如何根据需要选择特定版本。

标签: springmavenspring-boot

解决方案


使用 maven 依赖插件来找出依赖的来源:

mvn dependencies:list

或者简单地将 explizit 版本直接添加到您的 pom 中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>                
   <version>2.9.0.8</version>
</dependency>

这应该覆盖 spring 依赖项的版本


推荐阅读