2013-03-12 110 views
2

我有2個項目,可以說項目A和項目B.項目A對項目B具有Maven依賴項。兩個項目都包含同一個包中的類Test項目和Maven依賴關係中的相同類

現在,當我導入,

import com.my.package.Test; 

從項目A另一個類,我覺得(在運行時),它使用從B項目,而不是包含在同一項目中的類測試類。

有誰知道這是應該如何工作?

+0

我認爲類加載器決定要加載哪個。你無法控制它。 – Zutty 2013-03-12 10:50:41

+0

這正是我們爲包添加唯一前綴的原因(如'com.company.')。所以這個問題只會在你自己的項目中發生。在這裏你必須避免這種情況。 – Kai 2013-03-12 10:51:45

+0

好吧我只是想知道在Maven依賴之前是否有解決依賴項的方法。我想不是:)我應該重命名包 – 2013-03-12 10:57:08

回答

4

您不應該擁有具有相同FQN-s(完全限定名稱,例如com.foo.MyTest)的類。重複類只會導致這些問題。從兩個工件中的一箇中移除該類。然後使用maven-jar-pluginto create a test-jar artifact,這樣你就可以在兩個項目之間分享你的課程。

你也可以看看this SO answer

0

first classloader wins。 maven中的類加載器順序與依賴順序 相同,但您不應在單獨的項目中使用具有相同FQN的類。