У меня есть вопрос относительно того, как лучше всего реструктурировать ряд отдельных проектов Maven, используя комбинацию наследования и агрегирования.
Настройка сцены:
- Существуют 3 существующих проекта Maven на основе кода, все разработанные одной командой.
- 1 проект - это API, позволяет вызывать это project-api.
- Другие 2 проекта - это веб-приложения, использующие api-проект. Давайте назовем их web-app1 и web-app2.
Все три проекта имеют несколько общих зависимостей, таких как 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 и имеют только web-app1 и web-app2, наследуемые от этого POM. Я думаю, что это 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 приведет к созданию Project-API, и эта последняя сборка будет использоваться при создании web-app1 и web-app2?
Надеюсь, это не слишком смущает, с удовольствием уточню, если потребуется дополнительная информация. Не стесняйтесь сказать мне, если я полностью ошибаюсь! Спасибо.