Ответ
Проект был построен по многомодульной архитектуре с использованием Maven. Это обеспечивало четкое разделение ответственности и гибкость сборки.
Основные модули:
- core – доменные модели и бизнес-логика.
- api – REST-контроллеры, DTO и внешние интерфейсы.
- persistence – JPA-сущности, репозитории и миграции базы данных (Flyway).
- web – веб-слой (например, Thymeleaf).
Пример структуры родительского pom.xml:
<project>
...
<modules>
<module>core</module>
<module>api</module>
<module>persistence</module>
<module>web</module>
</modules>
</project>
Преимущества:
- Изоляция: Изменения в одном модуле (например,
persistence) не требуют пересборки всего проекта. - Повторное использование: Модуль
apiмог быть подключен как отдельная библиотека в другие сервисы. - Управление зависимостями: Общие зависимости и их версии централизованно управлялись через
<dependencyManagement>в родительском POM.
Сложность: Требовалось аккуратно настраивать зависимости между модулями, чтобы избежать циклических ссылок.