问题描述
我有一个父 POM 和一个普通的 Maven 项目。
两者都在其dependencyManagement 中定义了BOM。在某些情况下,这些 BOM 可能会重叠,例如两者都指定了 log4j 的版本。
从我的测试看来:
- 对于父 POM 中重叠的 BOM,第一个获胜,即提供工件的版本。
- 如果子项和父项的 BOM 重叠,则子项中 BOM 的版本会胜出。
很遗憾,我没有找到任何关于此的文档。
我是对的,我可以依赖这种行为吗?
解决方法
日志框架传统上与您的实际代码“相邻”,因此有点不清楚如何处理。
我发现将构建阶段依赖项与部署阶段依赖项分开对我有用。
基本思想是你写的代码只需要依赖日志框架的API(slf4j曾经是一个自然的选择),然后你有几个部署Maven配置(一个一个用于 JBoss,一个用于 WebSphere,一个用于在您的 IDE 中运行等),您可以在其中添加与该部署相关的依赖项。
所以我的建议是相应地更改您的代码库,只为日志记录框架提供 API 依赖项,然后为每种实际部署类型创建一个新的 Maven 项目。如果需要,您可能还想加入部署特定的配置文件。