覆盖更高版本的Spring Boot BOM策划的依赖性

时间:2020-02-22 09:29:00

标签: spring-boot maven-3

Spring启动文档建议大多数情况下,您实际上不需要覆盖BOM表依赖项。

因为有一些规定可以覆盖依赖关系。 场景:: 在父pom中声明:

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

在子pom中声明

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

重写spring-boot-starter-data-mongodb是否正确/最佳实践 具有更高版本的设备,例如说2.2.1用于春季靴2.1.4

我的观点是,降级后的版本在理论上是可以的,但是升级到更高版本可能会引起问题。

尽管重写了父pom中的声明,但依BOM声明仍被覆盖的依赖项仍然存在。

<dependencyManagement>
    <dependencies>
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-mongodb</artifactId>
      <version>2.2.1.RELEASE</version>
    </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.1.4</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

1 个答案:

答案 0 :(得分:2)

我认为这样做有风险,但有时必须这样做。您或团队必须权衡利弊。在某些情况下,可能会导致在BOM表之前提前依赖项的版本。

  • 安全性。有时,依赖项具有CVE漏洞。安全扫描可能会捕获此错误,并阻止您的应用程序被部署。
  • 新的必需功能。较新版本的依赖项可能具有您的软件所需的功能。
  • 错误修复。较新版本的依赖项可能已修复了错误。

在执行此操作之前要考虑的事项:

  • 请考虑首先升级BOM。 BOM可能是具有所需依赖版本的较新版本。
  • 如果您要升级BOM表,这实际上可能会对您的应用程序产生更大的影响,因为它将导致升级多个依赖项。
  • 测试,测试和更多测试。无论您是进行依赖性升级还是BOM升级,测试都是您最好的朋友。凭借良好的测试覆盖范围,您可以自信地前进。当您考虑可以快速而自信地升级依赖项时,进行出色的测试会带来惊人的投资回报。
  • 与功能版本相比,升级错误版本的风险较小。基本上,如果依赖项的版本仅升级版本中的第三个数字(x.y.z版本中的“ z”),则风险要小于第二个数字。
相关问题