Ответ
Родительский POM (Parent POM) — это специальный проект Maven, от которого другие проекты (модули) могут наследовать общие конфигурации. Это ключевой механизм для устранения дублирования в многомодульных сборках.
Основные наследуемые элементы:
- Зависимости (
<dependencies>и<dependencyManagement>). - Плагины и их конфигурации (
<plugins>и<pluginManagement>). - Свойства (
<properties>). - Версии (
<version>), идентификаторы группы (<groupId>). - Конфигурации репозиториев, отчётов и сборки.
Пример объявления родителя в дочернем pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>platform-parent</artifactId>
<version>2.0.0</version>
<!-- Опционально: относительный путь к родительскому pom.xml -->
<relativePath>../platform-parent/pom.xml</relativePath>
</parent>
<artifactId>my-service</artifactId>
...
</project>
Ключевые особенности:
<relativePath>: Указывает путь для локального поиска родительского POM. Если элемент отсутствует или файл не найден, Maven загрузит артефакт из репозитория.- Агрегация vs Наследование: Родительский POM (
<packaging>pom</packaging>) может также выступать как агрегатор в многомодульном проекте, объединяя модули в<modules>. - Переопределение: Дочерний POM может переопределить любую унаследованную конфигурацию.