У меня вопрос, как лучше всего реструктурировать ряд отдельных проектов Maven, используя комбинацию наследования и агрегации.
Настройка сцены:
Все три проекта имеют несколько общих базовых зависимостей, таких как log4j и junit. Помимо этого, web-app1 и web-app2 зависят от project-api, а также имеют ряд дополнительных общих зависимостей между ними.
Я читал https://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html , я просто хочу подтвердить что я понимаю передовой опыт.
Наследование:
Имеет ли смысл для меня создать родительский POM на уровне организации, который включает в себя зависимости (управление зависимостями), общие для всех трех проектов, а также некоторые параметры среды и общую информацию о проекте. Намерение состоит в том, что все проекты Maven (не обязательно напрямую) наследуются от этого POM.
Имеет ли мне смысл создать еще один родительский POM, который включает в себя зависимости (управление зависимостями), которые являются общими для web-app1 и web-app2, и от этого POM унаследованы только web-app1 и web-app2. Я думаю, что этот POM (назовем его родительским POM веб-приложения) должен быть дочерним POM родительского POM организационного уровня.
Агрегация:
С точки зрения агрегации, я не хочу создавать ни одного артефакта в конце дня. Скорее, я хочу запустить одну команду сборки Maven (вероятно, на уровне организационной POM) для сборки трех проектов в следующем порядке:
Это означает, что родительский POM организации объявляет модули:
И родительский POM веб-приложения объявляет модули:
Обратите внимание, что родительский POM веб-приложения и родительский POM организации не имеют связанного кода. Я считаю, что это нормально, отмечая: «Фактически, в мире Maven проект вообще не должен содержать никакого кода, а просто pom.xml». взято из http://maven.apache.org/pom.html .
Наконец, как мне обеспечить соблюдение нужного мне порядка сборки? Например. Создание организационной родительской POM приведет к созданию project-api, и эта последняя сборка будет использоваться для создания веб-приложений1 и веб-приложений2?
Я надеюсь, что это не слишком запутанно, с удовольствием уточню, есть ли дополнительная информация требуется. Не стесняйтесь сказать мне, если я ошибаюсь! Спасибо.