Многомодульные проекты
Многомодульный проект — когда большое приложение разбито на несколько независимых частей (модулей), которые собираются вместе. Вместо одного гигантского проекта — несколько маленьких, каждый со своей зоной ответственности.
my-app/
├── pom.xml ← родительский (parent), описывает общие настройки
├── core/
│ └── pom.xml ← модуль с бизнес-логикой
├── web/
│ └── pom.xml ← модуль с REST API, зависит от core
└── common/
└── pom.xml ← общие утилиты, используются и в core, и в web
Родительский pom.xml перечисляет модули и общие настройки (версии Java, общие зависимости):
<modules>
<module>core</module>
<module>web</module>
<module>common</module>
</modules>
Копнуть глубже
Зачем разбивать на модули:
- Чёткие границы.
webявно зависит отcore, а не наоборот — структура проекта показывает архитектуру. - Переиспользование.
commonможно подключить и вcore, и вwebбез копирования кода. - Быстрая сборка. Изменил только
web— Maven/Gradle может пересобрать только его, а не весь проект целиком (особенно эффективно у Gradle с инкрементальной сборкой). - Параллельная работа команды. Разные команды могут отвечать за разные модули, не мешая друг другу.
Зависимость между модулями объявляется как обычная зависимость, только координаты — свои:
<!-- в pom.xml модуля web -->
<dependency>
<groupId>ru.javaguide</groupId>
<artifactId>core</artifactId>
<version>1.0.0</version>
</dependency>
🎤 Закрыл тему, если можешь объяснить:
• что такое многомодульный проект и зачем его так разбивают;
• как один модуль объявляет зависимость от другого (если дошёл до 2-го слоя).
• как один модуль объявляет зависимость от другого (если дошёл до 2-го слоя).