Spring Boot的最终版本-如何覆盖我们想要的内容?

时间:2019-02-14 16:56:57

标签: spring maven spring-boot

我有一个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>

可以看出,我正在尝试从春季靴子中排除杰克逊-xxx。

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

现在,当我看到杰克逊内核的哪个版本时,杰克逊数据绑定将解析为哪个版本;它采用的版本-> 2.9.0.7(这是spring boot的一部分;但是我尝试将其排除在外)。

谁能帮助我理解为什么会这样,以及如何根据需要选择特定版本。

1 个答案:

答案 0 :(得分:1)

使用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依赖项的版本