2013-03-12 109 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的类。