Maven Eltern Pom Vs Module Pom

Es scheint mehrere Möglichkeiten zu geben, Eltern-Poms in einem Multiprojekt-Build zu strukturieren, und ich frage mich, ob jemand darüber nachgedacht hat, welche Vor- / Nachteile in jeder Hinsicht bestehen.

Die einfachste Methode, ein übergeordnetes POM zu haben, besteht darin, es im Stammverzeichnis eines Projekts abzulegen, d. H.

myproject/
  myproject-core/
  myproject-api/
  myproject-app/
  pom.xml

Dabei ist die Datei pom.xml sowohl das übergeordnete Projekt als auch die Module -core -api und -app

Die nächste Methode besteht darin, das übergeordnete Element in ein eigenes Unterverzeichnis wie in zu unterteilen

myproject/
  mypoject-parent/
    pom.xml
  myproject-core/
  myproject-api/
  myproject-app/

Wo der Eltern-POM noch die Module enthält, diese aber relativ sind, z. ../myproject-core

Schließlich gibt es die Option, bei der die Moduldefinition und das übergeordnete Element wie in getrennt sind

myproject/
  mypoject-parent/
    pom.xml
  myproject-core/
  myproject-api/
  myproject-app/
  pom.xml

Wenn das übergeordnete POM eine "gemeinsam genutzte" Konfiguration (DependencyManagement, Eigenschaften usw.) enthält und die Datei myproject / pom.xml die Liste der Module enthält.

Die Absicht ist, auf eine große Anzahl von Projekten und Artefakten skalierbar zu sein.

Ein paar Bonusfragen:

Wo ist der beste Ort, um die verschiedenen gemeinsam genutzten Konfigurationen wie Quellcodeverwaltung, Bereitstellungsverzeichnisse, allgemeine Plugins usw. zu definieren? eine gemeinsame).Wie gehen das Maven-Release-Plugin, Hudson und Nexus mit der Einrichtung Ihrer Multi-Projekte um?

Bearbeiten: Jedes der Unterprojekte hat eine eigene pom.xml, ich habe sie weggelassen, um sie knapp zu halten.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage