BOM 覆盖顺序具有重叠 BOM

问题描述

我有一个父 POM 和一个普通的 Maven 项目。

两者都在其dependencyManagement 中定义了BOM。在某些情况下,这些 BOM 可能会重叠,例如两者都指定了 log4j 的版本。

从我的测试看来:

  • 对于父 POM 中重叠的 BOM,第一个获胜,即提供工件的版本。
  • 如果子项和父项的 BOM 重叠,则子项中 BOM 的版本会胜出。

很遗憾,我没有找到任何关于此的文档。

我是对的,我可以依赖这种行为吗?

解决方法

日志框架传统上与您的实际代码“相邻”,因此有点不清楚如何处理。

我发现将构建阶段依赖项与部署阶段依赖项分开对我有用。

基本思想是你写的代码只需要依赖日志框架的API(slf4j曾经是一个自然的选择),然后你有几个部署Maven配置(一个一个用于 JBoss,一个用于 WebSphere,一个用于在您的 IDE 中运行等),您可以在其中添加与该部署相关的依赖项。

所以我的建议是相应地更改您的代码库,只为日志记录框架提供 API 依赖项,然后为每种实际部署类型创建一个新的 Maven 项目。如果需要,您可能还想加入部署特定的配置文件。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...