2013-11-23 4 views
0

У меня проблема в дизайне моего приложения. У меня есть приложение для просмотра элементов, назовем его V и хотим продлить его с помощью проекта редактора, назовем его E.Разработка программного обеспечения и циклические зависимости Maven

E зависит от многих классов V, поскольку он обеспечивает графический просмотр элементов. Таким образом, E есть зависимость от Maven E ->V. Теперь я хочу интегрировать E в V, потому что пользователи должны иметь возможность запускать редактор из программы просмотра. Это означает, что у меня также есть зависимость Maven V ->E, которая вызывает цикл зависимостей. Я пробовал разные значения scope, но не смог сломать цикл. Как я могу это достичь?

Проект V является очень монолитным и неструктурированным набором кода, и я не хочу его делить. В проекте E я могу делать все, что хочу (на самом деле он уже состоит из множества небольших проектов).

ответ

1

Один из способов - разделить части API каждого проекта (в основном, интерфейсы, вызываемые от другого). Это даст вам следующие зависимости:

v -> Vapi 
E -> Vapi 
V -> Eapi 
E -> Eapi 

и нет циклов.

Если вы не хотите разделить V схему, как это может работать:

E -> V 
E -> Eapi 
V -> Eapi 
+0

Я согласен с этим, но это трудно разделить 'V'. Я обновил вопрос. – Stephan

+0

@Stephan см. Обновленный ответ – Henry

+0

Я также пробовал это, но когда я создаю Jar 'V' (с maven-shade-plugin), он не содержит библиотеки' E'. – Stephan

1

Вам нужно написать свой код для работы с интерфейсом вместо класса; это наилучшая практика в любом случае. Поместите соответствующие файлы interface в модуль foo-api, а затем укажите foo-domain и foo-view в зависимости от foo-api.

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