我有2个项目,可以说项目A和项目B.项目A对项目B具有Maven依赖项。两个项目都包含同一个包中的类Test
。项目和Maven依赖关系中的相同类
现在,当我导入,
import com.my.package.Test;
从项目A另一个类,我觉得(在运行时),它使用从B项目,而不是包含在同一项目中的类测试类。
有谁知道这是应该如何工作?
我有2个项目,可以说项目A和项目B.项目A对项目B具有Maven依赖项。两个项目都包含同一个包中的类Test
。项目和Maven依赖关系中的相同类
现在,当我导入,
import com.my.package.Test;
从项目A另一个类,我觉得(在运行时),它使用从B项目,而不是包含在同一项目中的类测试类。
有谁知道这是应该如何工作?
您不应该拥有具有相同FQN-s(完全限定名称,例如com.foo.MyTest
)的类。重复类只会导致这些问题。从两个工件中的一个中移除该类。然后使用maven-jar-plugin
to create a test-jar artifact,这样你就可以在两个项目之间分享你的课程。
你也可以看看this SO answer。
first classloader wins。 maven中的类加载器顺序与依赖顺序 相同,但您不应在单独的项目中使用具有相同FQN的类。
我认为类加载器决定要加载哪个。你无法控制它。 – Zutty 2013-03-12 10:50:41
这正是我们为包添加唯一前缀的原因(如'com.company.')。所以这个问题只会在你自己的项目中发生。在这里你必须避免这种情况。 – Kai 2013-03-12 10:51:45
好吧我只是想知道在Maven依赖之前是否有解决依赖项的方法。我想不是:)我应该重命名包 – 2013-03-12 10:57:08