2013-05-09 4 views
28

Как мы можем разрешить циклическую зависимость maven. Предположим, что A является родительским проектом, а B и C - дочерними проектами. Если B зависит от C и C зависит от B, есть ли способ разрешить циклическую зависимость, отличную от другого проекта.как разрешить циклическую зависимость maven

Заранее спасибо, я искал в форумах, но не смог получить точное решение. Пожалуйста, дайте мне знать, если есть какая-либо возможность.

+1

Вы исключили создание нового проекта, который я бы сделал ... Любая причина, по которой вы не хотите этого делать? Это было бы лучшим решением. – NilsH

ответ

19

Maven не допускает циклических зависимостей между проектами, потому что в противном случае не ясно, какой проект строить первым. Поэтому вам нужно избавиться от этого цикла. Одним из решений является тот, который вы уже упоминали, для создания другого проекта. Другим было бы просто переместить некоторые классы из B в C или наоборот, когда это поможет. Или иногда правильно объединить проекты B и C в один проект, если нет необходимости иметь два из них.

Но, не зная и не анализируя, почему ваши проекты зависят друг от друга, сложно предложить лучшее решение.

Поэтому я предлагаю вам использовать инструменты, такие как JDepend или инструмент анализа InteliJ, чтобы найти ваши проблемные классы и на их основе найти лучший дизайн для вашего программного обеспечения.

В большинстве случаев я создаю нечто вроде интерфейсного модуля и модуля реализации, который избавляется от большинства циклов.

6

Создание нового проекта - действительно одно решение.

Зависимость Инверсия является вторым возможным решением.

Обратитесь к here за принцип ациклической зависимости.

И here Принцип инверсии зависимостей.