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.