使用更高版本覆盖 spring 引导 BOM 策划的依赖项
Overriding spring boot BOM curated dependency with higher version
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>
是否right/best练习覆盖spring-boot-starter-data-mongodb
更高版本可以说 2.2.1 for spring boot 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>
我认为这样做有风险,但有时不得不这样做。您或团队必须权衡 pros/cons。以下是一些可能导致在 BOM 之前推进依赖项版本的情况。
- 安全。有时依赖项具有 CVE 漏洞。安全扫描可能会发现这一点并阻止您的应用程序部署。
- 新的必需功能。较新版本的依赖项可能具有您的软件所需的功能。
- 错误修复。较新版本的依赖项可能修复了错误。
执行此操作之前需要考虑的事项:
- 考虑先升级BOM。可能是 BOM 具有具有所需依赖项版本的较新版本。
- 如果您采用升级 BOM 的方式,这实际上可能会对您的应用程序产生更大的影响,因为它会导致多个依赖项被升级。
- 测试、测试和更多测试。无论您是进行依赖升级还是 BOM 升级,测试都是您最好的朋友。有了良好的测试覆盖率,您就可以自信地向前迈进。当您考虑如何快速和自信地升级依赖项时,进行出色的测试会带来惊人的投资回报率。
- 与功能版本相比,升级错误版本风险更小。基本上,如果依赖项的版本仅升级版本中的第三个数字(版本 x.y.z 中的 'z'),则它的风险低于第二个。
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>
是否right/best练习覆盖spring-boot-starter-data-mongodb 更高版本可以说 2.2.1 for spring boot 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>
我认为这样做有风险,但有时不得不这样做。您或团队必须权衡 pros/cons。以下是一些可能导致在 BOM 之前推进依赖项版本的情况。
- 安全。有时依赖项具有 CVE 漏洞。安全扫描可能会发现这一点并阻止您的应用程序部署。
- 新的必需功能。较新版本的依赖项可能具有您的软件所需的功能。
- 错误修复。较新版本的依赖项可能修复了错误。
执行此操作之前需要考虑的事项:
- 考虑先升级BOM。可能是 BOM 具有具有所需依赖项版本的较新版本。
- 如果您采用升级 BOM 的方式,这实际上可能会对您的应用程序产生更大的影响,因为它会导致多个依赖项被升级。
- 测试、测试和更多测试。无论您是进行依赖升级还是 BOM 升级,测试都是您最好的朋友。有了良好的测试覆盖率,您就可以自信地向前迈进。当您考虑如何快速和自信地升级依赖项时,进行出色的测试会带来惊人的投资回报率。
- 与功能版本相比,升级错误版本风险更小。基本上,如果依赖项的版本仅升级版本中的第三个数字(版本 x.y.z 中的 'z'),则它的风险低于第二个。