如何完全覆盖spring boot starter的版本?

Posted

技术标签:

【中文标题】如何完全覆盖spring boot starter的版本?【英文标题】:How to totally overwrite the version of spring boot starter? 【发布时间】:2021-08-12 10:22:37 【问题描述】:

我父模块中的spring boot版本是v2.1.17.RELEASE

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.1.17.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

然后我在子模块中引入了spring-boot-starter-security,指定版本为2.4.4,覆盖了父模块中的版本(v2.1.17.RELEASE)。

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

然后,我运行mvn dependency:tree命令,发现子模块中spring-boot-starter-security的版本确实是2.4.4,但是中引用的artifactId(如spring-aop)的版本spring-boot-starter-security 仍然是 5.1.x 版本,它对应于 spring-boot-starter-security 的 v2.1.17.RELEASE 版本,而不是对应于 v2.4.4 版本的 spring-boot 的 5.3.x 版本-starter-安全

【问题讨论】:

【参考方案1】:

您好,请查看此示例

<properties>
    <dependencies.version>2.1.17.RELEASE</dependencies.version>
    <security.version>2.4.4</security.version>
</properties>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>$dependencies.version</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>$security.version</version>
</dependency>
  </dependencies>
</dependencyManagement>

【讨论】:

我试过了,但是没有用。 spring-boot-starter-security的版本确实是2.4.4,但是spring-security-web、spring-security-core等artifactId的版本不对(5.1.x)。

以上是关于如何完全覆盖spring boot starter的版本?的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot-starter-quartz集群实践

spring-boot-starter-quartz集群实践

spring-boot-starter-quartz集群实践

如何从 spring-boot-starter-parent 中排除特定依赖项

spring-boot-starter-test

spring-boot-starter-web 中默认的 JSON 错误响应来自哪里,如何调整?