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