2014-10-15 1 views
0

Представьте, что у нас есть два класса в нашем проекте, которые зависят друг от друга. То есть ввести циклическую зависимость между классами. Конечно, эти классы могут быть скомпилированы Java. Если мы разделим эти классы на два разных артефакта, Maven не сможет их скомпилировать. Они имеют циклическую зависимость между артефактами. Почему это возможно в одном артефакте и не возможно в два? Действительно, его одни и те же два класса, независимо от того, в каких папках они находятся.Почему Maven не может обрабатывать циклические зависимости, а компилятор Java может?

Но есть кое-что глубже я не получаю, я полагаю ..

?

+0

Ничего глубже. Java разрешает циклические зависимости только в том случае, если выполняется в одном прогоне компиляции. Так же Maven - fwiw, это просто обертка вокруг javac. –

+0

Я бы сказал, что maven не хочет этого делать. Запуск в циклах приводит вас далеко. Часто бывает лучше иметь линейный путь развертывания. Итак, дерево - ваш друг. – wemu

ответ

0

Если у вас есть 2 отдельных артефакта - это означает, что у вас есть две разные библиотеки. Вы должны создать одну библиотеку, а затем построить другую зависимую библиотеку. Вы не можете построить артефакт, прежде чем вы построили его зависимость. Это просто правила для артефактов. Каждый артефакт построен отдельным шагом.

Когда вы строите 2 зависимых класса в одной библиотеке - у вас нет таких ограничений, вы можете скомпилировать несколько классов за один шаг.