Frage

Was sind die besten Praktiken für Softwareversions- und Multimodules -Projekte mit Maven?

Ich meine, wenn ich ein Multimodules -Projekt mit Maven erstelle, was ist der beste Ansatz für die Versioning? Verwenden einer einzelnen Version für alle Module (definiert im oberen Projekt)? Für jedes Modul eine Version verwenden (definiert im POM jedes Moduls)? Gibt es einen anderen Ansatz, dem ich vermisse? Was sind die Vor- und Nachteile jedes Ansatzes?

Sind die verschiedenen Module im Allgemeinen zusammen (möglicherweise die gleiche Versionsnummer teilen)?

Vielen Dank

War es hilfreich?

Lösung

Ehrlich gesagt hängt es davon ab, was Sie tun möchten. Multimodule -Projekte werden aus mehreren Gründen erstellt. Eine davon ist, dass Sie nur das bereitstellen müssen, was sich anstelle aller Module geändert hat.

Denken Sie so darüber nach: Wenn Sie ein Nicht-Multi-Modul-Projekt hatten und nur eine Zeile in der Servicesebene ändern mussten, müssen Sie das gesamte Projekt neu aufbauen und den gesamten Code erneut bereitstellen ... auch wenn nur Ihre Die Diensteschicht wird sich ändern.

Mit Multi-Modul-Projekten können Sie Ihr Projekt regenerieren und nur das bereitstellen, was sich geändert hat ... Ihre Dienste. Dies reduziert das Risiko und Sie sind sicher, dass sich nur Ihr Servicemodul geändert hat.

Sie haben auch eine Vielzahl von Vorteilen für die Verwendung von Multi-Modul-Projekten, die ich hier nicht aufliste, aber es gibt sicherlich einen großen Vorteil, wenn Sie Ihre Versionsnummern Ihrer Module nicht synchronisieren.

Wenn Sie Ihr Projekt erstellen, sollten Sie es in einem Repository bereitstellen, das alle kompatiblen Gläser für Builds zusammenhält (in jedem Build wird ein neuer Ordner mit der übergeordneten POM-Versionsnummer erstellt). Auf diese Weise müssen Sie keine Dokumentation darüber behalten, welche Gläser kompatibel sind ... Sie alle sind nur zusammen mit einer Build -Nummer eingesetzt.

Andere Tipps

Ich suchte selbst eine Lösung für dieses genaue Problem und selbst und Versionen-Maven-Plugin war genau das, was ich brauchte. Ich mag das Release -Plugin nicht, das mit dem SCM -System kommuniziert. Das Versions -Plugin macht genau das, was wir brauchen: Es legt eine neue Versionsnummer in allen POMS des Projekts fest:

mvn versions:set -DnewVersion=2.0.0

Dann Ich kann mit Commits, Tags und einem offiziellen Build -Server -Build fortfahren ...

BEARBEITEN:

Das Versions-Plugin hängt davon ab, wie ein Maven-Multi-Modul-Projekt organisiert wurde: Infolgedessen aktualisiert es häufig nicht alle POM-Dateien in einem komplexen Multi-Modul-Projekt. Ich habe festgestellt, dass SED und Fund den Job viel zuverlässig mehr machen:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`

Normalerweise erstellen Sie ein Multi-Modul-Projekt, da Sie der Ansicht sind, dass die verschiedenen Module Teile eines einzelnen Ganzen sind. Vielleicht der Kunde, das Controller und das Dienste. Oder vielleicht die Benutzeroberfläche mit Dienstleistungen.

In jedem Fall ist es sinnvoll, die Versionsnummern für die verschiedenen Module in Schloss-Schritt zu haben. Maven auch nicht das durchsetzen als Regel.

In Bezug auf Ihre Frage

sind die verschiedenen Module zusammen (möglicherweise gemeinsam die gleiche Versionsnummer teilen)

Ich würde das denken. Dies ist einer der Gründe, um es ein Multi-Modul-Projekt zu haben. Andernfalls könnten Sie die Module als unabhängige Projekte haben.

Natürlich ist dies die Art von Dingen, die voller Randfälle und Ausnahmen sind ;-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top