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