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

java - 如何在dependencyManagement中替换springboot相关的所有组件的版本?

潘嘉颖
2023-12-03

项目的结构如下
image.png
问题是:雇主要求要升级spring-core的版本,我这里想着是把spring-boot-starter-parent版本升级
我的操作是:在A项目中在<dependencyManagement>中加入

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

结果是:springboot的各种starter的版本没有变,springframework的版本变成了我想要的,这样会导致boot的版本和spring的版本不匹配
我想要的结果是:springboot和spring的版本一起变父工程B不动(不知道是哪个项目组负责的)

共有1个答案

解明辉
2023-12-03

在 Maven 中,父 POM 的 <dependencyManagement> 元素会覆盖子 POM 中的 <dependencies> 元素。这意味着,如果你在父 POM 中定义了 spring-boot-starter-parent,它将覆盖子 POM 中的所有 Spring Boot 依赖项的版本。

你的问题在于,你只升级了 Spring Core 的版本,而没有升级 Spring Boot 的版本,这导致 Spring Boot 的版本和 Spring Core 的版本不匹配。

要解决这个问题,你应该在父 POM 中同时引入 spring-boot-starter-parentspring-core 的依赖项,并确保它们的版本匹配。然后,你可以在子 POM 中引入具体的 Spring Boot Starter,如 spring-boot-starter-web 等。这样,Spring Boot 和 Spring Core 的版本就会匹配。

以下是你可以在父 POM 中添加的依赖项:

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.6.6</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-core</artifactId>        <version>2.6.6</version>    </dependency></dependencies>

然后,在子 POM 中引入具体的 Spring Boot Starter:

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

这样,所有的 Spring Boot Starter 都会使用 spring-boot-starter-parent 中定义的版本,而 spring-core 也会使用相同的版本。只有当你明确指定某个依赖项的版本时,才会覆盖这个版本。

 类似资料:
  • 我只想替换字符串中的单词,如果单词字符或单词前后没有连字符。 文本: 替换后的预期结果: 正则表达式: < li >正则表达式当前仅匹配第一个匹配项(< code>#后的按钮)。我需要做什么来匹配所有事件? < li >如何在Java中将< code>button替换为< code>text或任何其他单词? 我读过主题我能在Java regex中替换组吗?,但是我真的不明白如何为我的特殊情况使用示

  • 我正在尝试用大量新值替换所有文档。 例如,我们在数据库中500k文档,并且我们500k了相同的文档,其中包含更新的道具。现在我们需要更新旧数据。 想法是在新集合中使用InsertMany with lean选项,然后删除旧集合以减少读/写次数。 问题是,对于这种情况,有没有更简单的方法? 在这种情况下,也许连进出口都更好? PS模型。updateMany()有一个过滤器,我们这里不需要过滤器,因为

  • 我在pyspark中有一个超过300列的数据帧。在这些列中,有些列的值为null。 例如: 当我想对列u 1求和时,结果得到的是Null,而不是724。 现在,我想用空格替换数据框所有列中的null。因此,当我尝试对这些列求和时,我不会得到null值,但会得到一个数值。 我们如何在pyspark中实现这一点

  • 问题内容: 我在多线程环境中有一个有状态的Bean,它将其状态保存在映射中。现在,我需要一种在一次原子操作中替换该映射的所有值的方法。 目前,我用作的实现,但这不是必需的。 我认为解决此问题的唯一方法是制作全局 地图并完全替换地图或使用。有没有更好的办法? 我的更新非常频繁,每秒一次或两次,但是机会很少。同样,整个地图只会包含少于20个值。 问题答案: 使用CAS的方法是在每次批量更新时复制地图内

  • 问题内容: 如何替换字符串(字符串以上)中的所有字符,应该看起来像? 问题答案: 一种无需正则表达式的简单方法: https://play.golang.org/p/B3c9Ket9fp 您最初可能会想些什么: https://play.golang.org/p/nbNNFJApPp

  • 问题内容: 如何在Java Swing中获得面板的所有组件? 有没有像C#这样的方法来处理JPanel的所有子组件? 问题答案: 您可以使用以下方法: