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