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

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

3 ответов


возможно, вы ищете опцию Maven dependency: 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.*

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

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

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

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

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.


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

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