Несмотря на то, что «независимость» является важным значением в микросервисном ландшафте, это не означает, что предпочтительным является безудержное дублирование кода.Выберите меньшее из двух зол и создайте родительский проект, который содержит только файл POM (без кода Java), и пусть все микросервисы используют этот POM в качестве родительского POM.В этом родительском файле pom вы можете объявить все версии всех зависимостей, используя тег <dependencyManagement>
, и все версии плагинов, используя тег <pluginManagement>
.Эти теги на самом деле не добавляют никаких зависимостей или плагинов к вашему реальному проекту, они просто объявляют версии, которые будут использоваться, если проект слишком сильно зависит от них.
Если вы используете spring-boot-starter pomкак ваш родитель уже, это может работать транзитивно: у ваших микросервисов есть родительский pom, а у вашего родительского pom есть стартовый pom пружинного загрузчика в качестве собственного родителя.
Если в какой-то момент в будущем один микросервис должен расходитьсяиз этого родительского pom для одной или нескольких конкретных зависимостей вы можете объявить новую версию в pom этого проекта, и вместо этого будут использоваться эти значения, эффективно перезаписывая то, что объявлено в родительском pom (ах), так что вы не потеряете эту гибкость.
Однако мы уже два года работаем с микросервисами с пружинной загрузкой, и поддержание согласованности и простоты одновременного обновления оказалось для нас более ценным, чем независимость.