2013-01-18 58 views
1

我想在一個Maven項目同時使用彈簧AMQP和彈簧數據的MongoDB。 Spring-amqp依賴於Spring 3.0.7,而spring-data-mongodb依賴於Spring 3.1.2。最終的結果是,我在depdendency樹中使用了Spring 3.0.7和3.1.2的包,這似乎在運行時導致問題。如何結合依賴不同Spring版本的Spring庫?

我應該如何解決這個問題?從兩個spring-amqp和spring-data-mongodb的所有傳遞依賴項手動添加直接依賴關係到特定的版本到我的項目?重新編譯一個或兩個以取決於普通的Spring版本?

+0

[Excluding Maven dependencies]可能的重複(http://stackoverflow.com/questions/9119055/excluding-maven-dependencies) – splash

回答

2

看看POM的dependencyManagement部分。一旦你在那裏指定了工件版本,Maven就會被迫在這個模塊中使用它們,它就是孩子。

+0

因此,基本上指定spring-amqp和spring-data-2的所有傳遞依賴的版本。 mongodb在我的項目的dependencyManagement? –

+0

就我個人而言,我會運行'mvn dependency:tree',查看不良依賴(例如我想要使用3.1.2)並在dependencyManagement部分用隱式3.1.2版本指定它們(不良依賴)。無需觸摸依賴關係部分或其他人。 Maven將自動使用3.1.2。 – madhead

+0

我認爲這就是我剛剛說的:) –