从父POM覆盖spring-boot版本

时间:2019-05-15 09:12:06

标签: java spring dependency-management

我有多个spring项目,它们都具有相同的自定义父POM,它们都从中继承其spring-boot版本(1.5.18.RELEASE)。只有一个子项目需要更新到2.1.4.RELEASE版本,但是当我导入spring-boot依赖项时,子项目中的spring-boot依赖项仍保持在1.5.18.RELEASE版本。

自定义父级POM:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.18.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<groupId>com.example</groupId>
<artifactId>services</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<name>Services :: Parent</name>
<description>Parent Project for Services</description>

儿童POM:

<parent>
    <artifactId>services</artifactId>
    <groupId>com.example</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../services/pom.xml</relativePath>
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.4.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2 个答案:

答案 0 :(得分:0)

您必须将父级更新为2.1.4.release。这是因为如果子代和父代不同步,则可能存在很多开发问题。 提示:您可以删除子依赖项中的version标签。

答案 1 :(得分:0)

spring-boot-starter-parent不仅定义了依赖关系,还配置了插件并提供了属性。因为您是从Spring Boot 1.5.X升级到Spring Boot 2.X,所以很可能仅仅为了增加版本就不够了,例如有incompatible changes between major releases Spring Boot 1.5.X是Java 6+,而Spring Boot 2.X是Java 8 +。

您应该将spring-boot-starter-parent-2.1.4.RELEASE用作孩子pom.xml的父母。您当前的做法是修修补补,请遵循Spring Boot文档并将子模块设置为适当的Spring Boot 2.X模块,否则您将浪费大量时间调试由部分设置引起的问题。