Подтвердить что ты не робот

Как перечислить последовательность сборки/компиляции Maven на основе зависимостей?

Если у меня есть иерархия pom, в которой superpom вызывает несколько подмодулей, которые зависят друг от друга, как я могу перечислить последовательность сборки/компиляции на основе зависимостей? IOW, если у суперпама есть модули mod1, mod2 и mod3, а mod2 зависит от mod3, а mod3 зависит от mod1, то последовательность - mod1, mod3, затем mod2. Как я могу перечислить этот порядок без сложного разбора XML-иерархии данных из pom?

4b9b3361

Ответ 1

Возможно, вы ищете вариант зависимости Maven: tree? Вам, вероятно, придется настроить includes, чтобы включить только ваши модули. http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

mvn dependency:tree -Dverbose -DoutputFile=tree.txt -DoutputType=text -Dincludes=com.mycompany.*

Ответ 2

То, что вы хотите знать, - это так называемый порядок сборки реактора.

Реактор определяет правильный порядок сборки из зависимостей, указанных каждым проектом в их соответствующих дескрипторах проекта, и затем выполнит заданный набор целей. Он может использоваться как для строительных проектов, так и для других целей, таких как создание сайта. (Источник: старая многомодульная документация)

Он собирает все модули для сборки, сортирует проекты и строит их по порядку. Он гарантирует, что любой модуль будет создан, прежде чем он понадобится другим модулям.

Насколько я знаю, нет прямого способа создания только списка этих элементов, но самое близкое, чтобы просто получить информацию:

mvn validate

Он покажет порядок сборки реактора сверху:

~/parent$ mvn validate
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] simple.parent
[INFO] simple.child
[INFO] simple.anotherchild
[...]                                                                        

Никакая дополнительная работа не выполняется, помимо проверки правильности проекта и доступности всей необходимой информации.

Для получения дополнительной информации см. также руководство по работе с несколькими модулями и этот ответ о том, что реактор maven.

Ответ 3

Если я правильно понимаю ваш вопрос, вам нужно обрабатывать зависимости каждого модуля со своим собственным pom. Например, mod2 pom.xml должен отображать com.yourcompany.mod3 в качестве зависимости, а mod3 pom.xml должен отображать com.yourcompany.mod1 как зависимость.

Затем вам нужно включить каждый модуль в список modules в superpom.xml.