2015-10-19 95 views
0

我試圖使用org.jboss.bom組中的一些BOM來引入與EAP 6.3.0兼容的API堆棧。我的理解是,這就是他們的目的。但是,當我引用它們(使用「提供」或甚至「編譯」範圍)時,依賴關係不會變得可傳遞。鑑於「編譯」範圍用於BOM內部的項目,依賴機制的Maven's documentation似乎表明這些項目應該添加到我的項目的類路徑中。然而,我得到了應該引入類的未定義符號。JBoss Maven BOM和傳遞依賴

例如,在項目P中,我包括org.jboss.bom.wfk:jboss-javaee-6.0-with-spring:2.4 .0-redhat-2 with'provided'scope,yet org.springframework.context.ApplicationContext is undefined in P.

這一切都發生在JBoss Dev Studio 8.1.0.GA中,如果這有所作爲。

+0

'使用'提供的'範圍'*確實*在這裏有所作爲。 – Tome

+0

@Tome我不認爲「提供」所帶來的差異解釋了我所看到的。但是,謝謝你讓我重新閱讀Maven文檔中的表格,因爲我現在可以更清楚地描述我的問題。不知何故,當表中的依賴項的範圍未指定時,表格給了我一個特定的結果。相應編輯描述... – nclark

+0

m2e插件版本爲:m2e 1.5.1,m2e wtp 1.1.0,org.jboss.tools.maven。* 1.6.2 - 最終 – nclark

回答

0

我通過更詳細地閱讀Maven Dependency文檔找出瞭解決方案。

這裏是我的外賣:你的不能依賴於Eclipse m2e插件來通過Maven依賴性雜草看到你。知道何時/如何使用POM的<dependencyManagement>部分(以及何時不使用它)。當你想使用一個BOM特別知道具體的調用Maven的需求:導入BOM的<dependencyManagement>部分與pom<type>import<scope>,然後在「常規」 <dependencies>節(<dependencyManagement>)特別調用您需要從POM獲得子文物,但是省略了版本。 (全部拼寫爲here。)

BOM的目的不是讓您通過僅引用BOM工件來大量導入依賴關係;相反,它要確保依賴關係的版本是正確的,正如BOM所定義的那樣。

不要認爲Maven允許您以邏輯/數學方式表達事物。瞭解如何取悅野獸,不要依賴巫師來爲你解決這個問題。詳細閱讀Maven文檔,找出食譜並精確地遵循它們。