2013-03-12 2 views
2

У меня есть 2 проекта, скажем, проект A и проект B. Проект A имеет зависимость от Maven от Project B. Оба проекта содержат класс Test в том же пакете.Тот же класс в зависимости от проекта и maven

Теперь, когда я импортировать,

import com.my.package.Test; 

Из другого класса в проекте А, я думаю, что (во время выполнения) он использует класс Test из проекта Б, а не классов, содержащихся в одном проекте.

Кто-нибудь знает, так ли это должно работать?

+0

Я думаю, что classloader решает, что загрузить. Вы не можете контролировать это. – Zutty

+0

Именно поэтому мы добавляем уникальный префикс к пакетам (например, 'com.company.'). Таким образом, эта проблема может произойти только с пакетами в ваших собственных проектах. Здесь вы должны избегать этого обстоятельства. – Kai

+0

Хорошо, я просто задавался вопросом, есть ли способ разрешить зависимость из одного и того же проекта до зависимости от Maven. Наверное, нет:) Я должен просто переименовать пакет –

ответ

4

У вас не должно быть классов с одинаковыми FQN-s (полные имена, например com.foo.MyTest). Наличие дублирующих классов приведет только к таким проблемам. Удалите класс из одного из двух артефактов. Затем используйте maven-jar-pluginto create a test-jar artifact, чтобы вы могли делиться своим классом между двумя проектами.

Вы также можете взглянуть на this SO answer.

0

Победитель первого класса. Порядок Classloader в maven совпадает с порядком зависимости, , но вы должны nbot иметь классы с одинаковым FQN в отдельных проектах.

Смежные вопросы