1

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

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

从我的测试看来:

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

不幸的是,我没有找到任何关于此的文档。

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

4

1 回答 1

0

日志框架传统上存在于您的实际代码“旁边”,因此有点不清楚如何处理这个问题。

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

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

所以我的建议是相应地更改您的代码库,使其仅具有日志框架的 API 依赖项,然后为每个实际部署类型创建一个新的 Maven 项目。如果需要,您可能还需要烘焙特定于部署的配置文件。

于 2021-07-04T15:06:50.970 回答