Преимущества разделения родительской и рабочей спецификации / POM в многомодульном проекте Maven? - PullRequest
0 голосов
/ 09 марта 2020

Допустим, у нас есть следующая многомодульная структура Maven:

all-microservices-root
|
 `-- pom.xml (defines common dependencies/plugins for all microservices)
|
 `-- microservice-a
  |
  |`-- repo-a
  | |
  |  `-- pom.xml (inherits from parent-a)
  |
  |`-- service-a
  | |
  |  `-- pom.xml (inherits from parent-a)
  |
  |`-- parent-a
  | |
  |  `-- pom.xml (a POM packaging that inherits from all-microservices-root with some additional common dependencies for microservice-a modules)
  |
  |`-- springboot-exec-a
  | |
  |  `-- pom.xml (inherits from parent-a)
  |
   `-- pom.xml (a POM packaging that consists only of <modules>: repo-a, service-a, and springboot-exec-a)
|
 `-- microservice-b
  |
  |`-- repo-b
  | |
  |  `-- pom.xml (inherits from parent-b)
  |
  |`-- service-b
  | |
  |  `-- pom.xml (inherits from parent-b)
  |
  |`-- parent-b
  | |
  |  `-- pom.xml (a POM packaging that inherits from all-microservices-root with some additional common dependencies for microservice-a modules)
  |
  |`-- springboot-exec-b
  | |
  |  `-- pom.xml (inherits from parent-b)
  |
   `-- pom.xml (a POM packaging that consists only of <modules>: repo-b, service-b, and springboot-exec-b)

Существует несколько микросервисных проектов, все из которых наследуются от общего POM (all-microservices- root).

Каждый микросервисный проект имеет две упаковки POM:

  1. Родительский POM, содержащий дополнительные общие зависимости, и другие модули в проекте микросервиса наследуют от него
  2. POM, который используется исключительно для сборки других модулей (не наследуется ни от чего и содержит только <modules>

Примечание: springboot-exe c - * имеет плагин Maven Spring Boot для переупаковки

Мой вопрос заключается в том, каковы преимущества настройки проекта, как описано выше, когда один POM отвечает только за сборку проекта, а другой отвечает за рефакторинг зависимостей mciroservice-Speci c по сравнению с положением все указанные общие c микросервисные зависимости и модули, все вместе в одном POM (в основном получают избавиться от родительских * модулей)?

...