Ответ
Многомодульный проект в Maven — это структура, где один родительский проект (POM) объединяет несколько дочерних модулей. Это позволяет организовать код в логические блоки с четко определенными зависимостями.
Основные преимущества:
- Упрощение сборки: Общие команды (
mvn clean install) выполняются для всех модулей сразу. - Изоляция и переиспользование: Модули могут быть независимо скомпилированы, протестированы и использованы как зависимости.
- Управление зависимостями: Четкая иерархия и централизованное объявление версий зависимостей в родительском POM.
- Структурирование: Идеально подходит для разделения на слои приложения (например,
core,api,service,web).
Пример структуры проекта:
parent-project/
├── pom.xml (родительский, packaging = pom)
├── core-module/
│ └── pom.xml
└── web-module/
└── pom.xml
Ключевые элементы родительского pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>core-module</module>
<module>web-module</module>
</modules>
<!-- Общие зависимости и плагины для всех модулей -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.1.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
Зависимость между модулями (в pom.xml модуля web-module):
<dependency>
<groupId>com.example</groupId>
<artifactId>core-module</artifactId>
<version>${project.version}</version>
</dependency>