JBoss Maven BOM和传递依赖

时间:2015-10-19 19:27:20

标签: maven jboss7.x jboss-eap-6

我尝试使用org.jboss.bom组中的多个BOM来引入与EAP 6.3.0兼容的API堆栈。我的理解是,这就是他们的目标。但是当我引用它们时(使用'提供'甚至'编译范围),依赖关系不会成为可传递的。鉴于"编译"范围用于BOM中的项目,依赖性机制的Maven's documentation似乎表明这些项目应该添加到我的项目的类路径中。然而,我正在为应该引入的类获取未定义的符号。

例如,在项目P中,我包括org.jboss.bom.wfk:jboss-javaee-6.0-with-spring:2.4.0-redhat-2 with'提供'范围,但org.springframework.context.ApplicationContext在P。

中未定义

这一切都发生在JBoss Dev Studio 8.1.0.GA中,如果这有所不同。

1 个答案:

答案 0 :(得分:1)

我自己通过阅读Maven Dependency文档更详细地找到了解决方案。

这是我的外卖:你不能依赖Eclipse m2e插件来看你通过Maven依赖杂草。知道何时/如何使用POM的<dependencyManagement>部分(以及何时不使用它)。特别要了解Maven在使用BOM时需要的特定调用:在<dependencyManagement>部分<type> pom<scope> import导入BOM },然后在“常规”<dependencies>部分( <dependencyManagement>)专门从POM中调出所需的子工件,但省略版本。 (全部拼写为here。)

BOM的目的不是允许您通过仅引用BOM工件来批量导入依赖项。相反,它是为了确保依赖关系的版本是正确的,如BOM所定义的那样。

不要认为Maven允许您以逻辑/数学方式减少术语。了解如何取悦野兽,不要依赖巫师为您解决这个问题。详细阅读Maven文档,找出配方并完全遵循它们。