rquitetura de exemplo de herança e agregação de Mav

Tenho uma dúvida sobre a melhor maneira de reestruturar vários projetos individuais do Maven usando uma combinação de herança e agregaçã

Preparando a cena

Existem 3 projetos Maven existentes baseados em código, todos desenvolvidos pela mesma equip projeto @ 1 é uma API, vamos chamar é project-apOs outros 2 projetos são aplicativos da web que utilizam a API do projeto. Vamos chamá-los de web-app1 e web-app2.

odos os três projetos têm algumas dependências básicas, como log4j e junit em comum. Além disso, web-app1 e web-app2 dependem da API do projeto e também compartilham várias dependências comuns adicionais entre ela

Eu tenho lidohttps: //books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.htm, Estou apenas querendo confirmar que entendo as melhores práticas.

Herança

Faria sentido criar um POM pai no nível organizacional que inclua as dependências (gerenciamento de dependências) comuns aos três projetos e algumas configurações de ambiente e informações gerais do projeto. A intenção de todos os projetos do Maven (não necessariamente diretamente) herdarem deste POM.

Faria sentido criar outro POM pai que inclua as dependências (gerenciamento de dependências) comuns ao web-app1 e web-app2 e que apenas herdam web-app1 e web-app2 deste POM. Acho que esse POM (vamos chamá-lo de POM pai de aplicativo da web) deve ser um POM filho do POM pai no nível organizacional.

Agregação

Em termos de agregação, não quero criar um único artefato no final do dia. Em vez disso, desejo executar um comando de construção do Maven (provavelmente no nível da POM organizacional) para criar os três projetos nesta ordem:

project-api web-app1 web-app2

Isso significa que o POM pai organizacional declararia os módulos:

project-api POM pai do aplicativo Web

E o POM pai do aplicativo Web declararia os módulos:

web-app1 web-app2

Observe que o POM pai do aplicativo da Web e o POM pai organizacional não possuem código relacionado. Acredito que isso seja bom, observando "De fato, no mundo Maven, um projeto não precisa conter nenhum código, apenas um pom.xml". Tirado dehttp: //maven.apache.org/pom.htm.

Por fim, como garantir que a ordem de compilação necessária seja respeitada? Por exemplo. Construir o POM pai organizacional resultaria na criação da API do projeto e essa compilação mais recente seria usada na construção de web-app1 e web-app2?

Espero que isso não seja muito confuso, prazer em esclarecer se mais informações são necessárias. Sinta-se livre para me dizer se eu tenho isso completamente errado! Obrigado

questionAnswers(1)

yourAnswerToTheQuestion