Wie sind Multi-POM Maven Projects zu verwalten/releasen

ArkLut

Aktives Mitglied
Hi,


Ich kenne Multi Pom maven projecte bei denen alle die Version des parents haben.

Diese sind etwa so strukturiert, dann erben die child poms die Version und damit die module/jars:


Parent:
Code:
    <groupId>com.example.apps</groupId>
    <artifactId>megaApp</artifactId>
    <packaging>pom</packaging>
    <version>1.2.3-SNAPSHOT</version>
    <name>super application</name>
    <modules>
        <module>megaApp-assembly</module>
        <module>megaApp-config</module>
        <module>megaApp-common</module>
        <module>megaApp-persist</module>
        <module>megaApp-webapp</module>
        <module>megaApp-service</module>
        <module>megaApp-ear</module>
    </modules>


Childs:
Code:
    <parent>
        <groupId>com.example.apps</groupId>
        <artifactId>megaApp</artifactId>
        <version>1.2.3-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>megaApp-config</artifactId>
    <name>megaApp-CONFIG</name>
    <description>megaApp Configuration</description>

Das ist für mich kein Problem.

aber ich bin jetzt über einige gestoßen bei denen die einzelnen Sub Module eigene Versionen haben.
was ich mich dabei frage wie man die releaset?

Bei den mit gemeinsamer Version ist es klar - man kann nur alle gemeinsam releasen - macht auch anders kaum sind - dafür gibt es aber keine Probleme.

aber bei denen mit einzelnen Versionen?
Klar der Vorteil wäre ich kann sie einzeln releasen und so muss ich nicht alles neu releasen wenn es nur in einem eine Änderung gibt.
ABER wenn es eine Änderung gibt muss ich ja auch die abhängenden neu releasen – der Vorteil geht (zum teil) verloren. (mMn völlig, da es mehr denk aufwand ist und das Maven Release Plugin das glaube ich nicht kann)
das ist insbesondere blöd wenn im parent gemeinsam die Versionen von Abhängigkeit definiert sind (in den Properties) – das alle die gleichen haben.

wie seht ihr das?

ich bin grade auf ein solches Project gestoßen - und versuche zu durchschauen wie ich das geordnet releasen kann.
 

dzim

Top Contributor
Also wir machen mehr oder weniger so: Wird ein Modul, z.B. das Modell, verändert, wird dessen Version angepasst und die aller Dependencies meist nur im Patch. Das liegt aber auch konkret daran, das wir in einem Maven-Projekt mehrere Applikationen haben (darüber ob das jetzt sauber ist, *kann* man streiten, mich stört es nicht...), die im Prinzip "continuous" released werden.

Wir haben aber im Kontrast dazu auch ein grosses Projekt, bei dem alle, die das Parent verwenden, dessen Version nutzen - macht dort Sinn, weil dass nur nach speziellen Vorgaben released (vielleicht 1-2 Mal pro Jahr) wird.

Es ist also absolut abhängig vom Use-Case, finde ich.
 

mihe7

Top Contributor
Wir machen das noch einfacher: wir haben keine Versionsnummern (d. h. die im POM angegebene Version existiert nur pro forma) :D

Stattdessen verwendet Jenkins beim Build ein anderes Profil, das aus unterschiedlichen Werten eine dem Commit zuordenbare Versionsnummer generiert und in die Anwendung integriert...
 

dzim

Top Contributor
@mihe7 So kann man es auch machen. In unseren Maven-Builds wird i.d.R. ein Manifest-Entry mit dem Git-Hash injeziert. Bei einer JavaFX GUI von uns läuft im Maven ein Ant-Task (frag nicht...), der den Git-Hash in eine generierte Klasse einträgt, die dann im GUI verwendet wird.
 

mihe7

Top Contributor
Ja, so in etwa ist das bei uns auch, nur nehmen wir das git-commit-id-plugin und kein ant her :) Die Versionsnummer besteht dann aus Datum, Uhrzeit und Git-Hash :)
 

dzim

Top Contributor
Für den Git-Hash nutzen wir das auch, aber um die Datei zu manipulieren nutze ich den Ant-Task (weil das damit erschreckenderweise einfacher geht, als mit Maven-Bordmitteln, ohne eigene Plugins schreiben zu müssen).
 

mihe7

Top Contributor
Das wiederum läuft bei uns über Resource-Filter. Es gibt eine Datei version.properties die enthält einen Key application.version=${version.number} und das wars :)
 

dzim

Top Contributor
Ah... Der Resource-Filter hat mich aber auch schon man in den Wahnsinn getrieben: Versuch ihm mal beizubringen, dass er (in einer Java 8-Umgebung) Property-Dateien für Übersetzungen *nicht* nach UTF-8 formatieren darf, alle anderen schon. Und nein: In-/Excludes bringen nichts! Ich musste einen eigenen Resource-Ordner definieren. (Bei uns wird übers Profil der Log-Level im log4j2.xml auf diese Art angepasst.)
Aber Grundsätzlich hast du recht: Ein Property-Datei-Template im Resource anzupassen und im Code einfach zu lesen, ist deutlich besser. Aber das Projekt fing for einigen Jahren, als ich noch nicht mit Maven klar kam, rein als Ant-Build an... Shame on me.
 

mrBrown

Super-Moderator
Mitarbeiter
Versuch ihm mal beizubringen, dass er (in einer Java 8-Umgebung) Property-Dateien für Übersetzungen *nicht* nach UTF-8 formatieren darf, alle anderen schon. Und nein: In-/Excludes bringen nichts! Ich musste einen eigenen Resource-Ordner definieren.
Da macht Maven doch alles richtig: Nutzer so lange quälen, bis dafür endlich UTF-8 genutzt wird :p
 

dzim

Top Contributor
Ja, oder man auf Java 9+ umsteigt, wo UTF-8 in solchen Properties kein Problem mehr darstellen. Hab ja eigentlich auch nie verstanden, warum die bei den Dateien da so eine Encoding-Extrawurscht gemacht haben. Hab schon wirklich mal überlegt, ne eigene ResourceBundle-Impl zu schreiben, die JSON als Properties verwendet. Oder noch besser HOKON.
Aber gibt's vermutlich alles schon...
 

mihe7

Top Contributor
Hab ja eigentlich auch nie verstanden, warum die bei den Dateien da so eine Encoding-Extrawurscht gemacht haben.
Das ist allerdings eine berechtigte Frage. Java arbeitet(e) intern mit UTF-16, berücksichtigt an jeder Ecke die Arbeit mit verschiedenen Encodings aber genau an der Stelle, wo es um Internationalisierung geht und damit ein SBCS ganz offensichtlich nicht ausreicht, legt man sich dann auf ISO-8859-1 fest. WTF?!?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eclipse zeigt mir nichtmehr an, welche Methoden in einer Klasse sind IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
T DrJava: Variablen sind angeblich final IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
dzim Eclipse Meine Menüs sind weg... IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
M Junit Reports sind leer IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
P Wo sind die Vorlagen für ein GUI in Netbeans geblieben? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
Momolin Eclipse installierte Plugins sind nicht ausführbar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
T Alle Projekte sind verschwunden !! IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
T Eclipse registriert nicht, dass die Fehler behoben sind IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
B Welche Plugins sind für Eclipse nützlich? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
Gregorrr Eclipse Best Practice: Multi-Projekt mit Eclipse + EGit (Git) + m2e (Maven) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
byte Eclipse: Multi Monitoring IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
doopexxx Add an maven project to an existing maven project IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 23
MiMa Netbeans zu IntelliJ mit Maven konvertieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
MiMa IntelliJ Maven Projekt erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 15
Y IDEA IntelliJ Warum findet IntelliJ die maven property nicht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
Robertop Maven Warnung "'version' contains an expression but should be a constant" in Eclipse verstecken IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
O NetBeans Java Projekt OHNE Maven erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
O NetBeans Java Projekt OHNE Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
P Maven für Intellij IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
mrBrown IntelliJ 2020.1 - Maven Projekte nicht ausführbar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
J Maven in Gradle builden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
D Jenkins/Gradle maven-publish Problem IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
U Ich kann ein Plugin anhand von Maven nicht builden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
C Ändern der Hauptklasse und dependencys in maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
C maven startet jetty, netbeans "run" startet glassfish IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
J Eclipse Nach Maven Einstellung -> Ordner /target im Arbeitsverzeichnis IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
D Gradle - DSL und Repositories von Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
K Eclipse Seltsames Maven Compiler Verhalten mit OpenCV IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
K Netbeans + Maven: default pom Inhalt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
K Maven + GWT (+ Eclipse)? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
E Maven-Installation für Intellij IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M Eclipse import eines maven projects "missing artifact" IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
D Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
N Maven dependencies Informationen finden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
F [Maven] cannot find plugins IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
J Eclipse Eclipse mit Maven mit Abhängigkeiten IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
L Eclipse Eclipse - Projekte "mischen" Dynamisches Web Projekt + Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
G Maven - lokales Repository erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
D NetBeans Maven Projekt in Netbeans => WEKA wirft (java.lang.OutOfMemoryError: Java heap space) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
thet1983 Eclipse Eclipse - Maven - Wildfly - archetype:generate IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
G eclipse und Webprojekte mit Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
D Eclipse Eclipse deployment assmebly + Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
P Eclipse Maven Support IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
A IDEA IntelliJ IntelliJ Maven oder Webprojekt, kann keine normalen Java Klassen erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
Tarrew Problem mit Maven und der Erkennung von generierten Antlr Files. IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
M [Maven] Depencies mit in jar übernehmen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
N Eclipse Maven , Javafx , SceneBuilder IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
H Maven realer Classpath? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
R Eclipse Maven package mit dependencies IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
E Maven - *.jars landen nicht im lokalen Repository IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
I Maven, Eclipse, building workspace loop IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
B Versionierung mit Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
DEvent [maven] property als parameter IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
S Eclipse Java + Shellscript mit Maven und Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
M Eclipse Maven/Eclipse ClassLoader Reihenfolge IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
B Maven - Angeben welche Klassen/Packes für build benutzen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
J Eclipse Checkout/Import Maven Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
C Eclipse Verständnisfrage Eclipse+Maven+Resources IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
C Eclipse Verständnisfrage Eclipse+Maven+Dependencies IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
H maven-javadoc-plugin: package does not exist IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
P Eclipse Maven integration IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
K Maven: Reporting zu einer bestimmten Revision IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
S Maven und Native-Libs IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
T Eclipse Maven-Plugin IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
S Maven: Abhängigkeiten + target in [b]eine[/b] Jar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
G NetBeans Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
MQue Maven und SVN IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
S Maven / Javadoc als jar deployen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
Kessi Maven assembly vergisst eigene Klassen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
D Einzelnen Unit-Test mit Maven ausführen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
J Ant-Tasks in Maven einbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 13
M MyLyn und Maven installieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 12
D Maven vs. Ivy IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Konfigurationsdateien und Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
F Maven plugin für Eclipse: tld dependencies in jars IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M Maven 2, XDoclet ejbdoclet und Java 1.5 IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
E Maven mit WSDL2Java IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
Y Maven und JUnit IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
Y Maven und myEclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
B Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7

Ähnliche Java Themen

Neue Themen


Oben