Nur einen Teilbaum in Maven releasen?

PinkMuffin

Bekanntes Mitglied
Also, erst mal kurz zur Situation:
In der Firma werden alle Produkte im gleichen Git-Repository geführt, da es recht kleine Produkte sind und man nicht immer wechseln müssen soll.
(Wie gut das ist, weiß ich nicht, allerdings habe ich da auch keinen Einfluss drauf)
Das Problem ist, wenn jetzt ein Release gemacht wird, wird bei allen Produkten die Version hochgezählt, auch wenn ja keine Änderung war, dadurch wird das Ganze sehr unübersichtlich. Die Frage wäre, ob man einen Maven-Job (Jenkins Job(?)) so definieren könnte, dass nicht die gesamte Mavenstruktur releast wird?

Für mich ist das ganze noch etwas unübersichtlich, wir benutzen Maven, Jenkins und Github, und ich bin mir nicht zu 100% sicher, was davon wofür zuständig ist.

Das oben beschriebene ist die langfristig geplante Lösung. Kurzfristig war die Überlegung, dass bei einem Jenkins-Job eine Release-Notiz beigefügt werden kann, damit man wenigstens genau nachvollziehen kann, was sich mit der Version an welchem Produkt geändert hat. Außerdem soll ein git-Tag erstellt werden, aus dem ein neuer Branch erstellt wird, das ist im Moment meine Aufgabe.

Meine bisherigen Erkenntnisse:
Prinzipiell müsste ich im Jenkins-Job einen Maven-Befehl mitgeben, der eine Release-Notiz ermöglicht (dazu habe ich absolut gar nichts gefunden), anschließend müsste ein Tag gesetzt werden und dann vermutlich mit
Code:
git checkout -b newbranch branchname
aus diesem Tag ein Branch erzeugt werden.

Zur Frage:
(Hat jemand ein Problem wie in der langfristigen Lösung schon mal gehabt, bzw gibt es da Ansätze, die ihr empfehlen könnt, über die ich mich informieren könnte?)
Zweitens: Wie genau würde ich bei der kurzfristigen Lösung vorgehen, ich stehe etwas auf dem Schlauch..
https://www.thomas-krenn.com/de/wiki/Git_Tags <-- Hier steht zwar prinzipiell drin, was ein Tag ist, aber ich kann aus dem gegebenen Code keine allgemeinen Regeln für das Erstellen eines Tags ableiten.
Code:
:~/repos/dev-1$ git tag v1.2
:~/repos/dev-1$ git show v1.2
commit cd490b9cda416a4b93b4a6bf4ac2c0ddb6740cc5
Author: Test User <tktest@example.com>
Date:   Tue Feb 7 07:15:19 2012 +0100

    version 1.2
Reicht für meine Zwecke schon die erste Zeile, bzw was passiert da in der dritten Zeile, wurde das generiert, oder muss man diesen Code für sein Projekt wissen?

Sorry, dass es so viele Fragen sind, aber ich bin im Moment ziemlich ratlos, da ich mich sonst zu 80% in Büchern informiere und nur bei Fehlern google, doch durch Corona ist im Moment nicht viel mit Büchereien ^^°
Danke fürs Lesen
 

mrBrown

Super-Moderator
Mitarbeiter
Ist das alles ein einziges Maven-Multi-Module-Projekt, und im Jenkins gibt es genau einen Job, der alles baut und publish't?


Der "einfache" und auch normale Weg wäre, unabhängige Projekte auch auf Maven-Ebene unabhängig zu haben und pro Projekt dann einen Jenkins-Job, dann werden alle unabhängig released.


Aber: du bist doch relativ "neu" im Thema und sollst dich von Firmen-Seite aus mit Release-Strategien etc beschäftigen? o_O
 

PinkMuffin

Bekanntes Mitglied
Aber: du bist doch relativ "neu" im Thema und sollst dich von Firmen-Seite aus mit Release-Strategien etc beschäftigen? o_O
Du brauchst das neu nicht in Anführungszeichen setzen, ich bin absolut neu in dem Thema 😅
Mein Anweiser gibt mir im Moment Themen, die liegen geblieben sind, dass sind dann leider nicht zwingend Anfängerthemen..

Es ist ein einziges Maven-Multi-Module-Projekt, allerdings gibt es in Jenkins einige verschiedene Jobs. Allerdings sind einige davon wohl von abap, da das von der Java-Entwicklung getrennt gehalten werden muss.

Mir steht jetzt auch nicht wirklich zu, den Entwicklern dort in ihre Maven-Struktur reinzureden, deshalb wollte ich wissen, ob ein teilweiser Release rein praktisch möglich ist. Das ich das dann später, sobald ich mehr Spielraum und Ahnung habe, auf dem sinnvolleren Weg lösen werde, ist dann ja eine andere Sache.
 

LimDul

Top Contributor
Möglich? Mit Sicherheit.
Einfach möglich - eher nein.

Insbesondere wenn man so eine integrierte Lösung mit Jenkins und Git hat.

Vermutlich ist es möglich, wenn die maven-Struktur tatsächlich sich komplett splittet - es also kein Modul gibt, was zu mehreren "Anwendungen" gehört und mit allen Anwendungen released werden muss. Ggf. kann man den den maven release befehlt auf die relevanteste Pom laufen lassen und dann wird nur der Teilbaum darunter aktualisert.

Wenn man aber nun Jenkins Job und die Versionen in git auch noch Taggen will, wird es spaßig. Den ein Tag in git kann ich nicht auf einen Teilbaum setzen, sondern immer nur auf das gesamte GIT. Da muss man dann mit Präfixen oder ähnlichen arbeiten und dafür sorgen, dass das alles in sich konsistent bleibt. Einfach ist aber definitiv was anderes. Dafür müsste man als erstes mal den Release Prozess im Detail ansehen - wie tickt der eigentlich?
* Wo wird die Version festgelegt (Git Tag, Jenkinks Job Parameter, Entwickler per maven Befehl)
* Wer baut wann die Version (Jenkins vermutlich aber wann und auf welchem Stand? Branch? Tag? ....)

Da gibt es verschiedene Möglichkeiten und du müsstest als erstes versuchen zu verstehen, wie das funktioniert.[/B]
 

PinkMuffin

Bekanntes Mitglied
Möglich? Mit Sicherheit.
Einfach möglich - eher nein.
Ja, ich hör auch grad am Telefon, dass sie über mehrere Repositories und mehrere verschiedene Maven-Projekte nachdenken.. meine Aufgabe hat sich auch schon wieder geändert.. mittlerweile lohnt es sich fast nicht mehr, sich Gedanken zu einer Aufgabe zu machen, weil das meiste eh wieder verworfen wird..
Das Ding ist, dass wenn ich eine Jenkins Funktionalität suche, ich immer auf ein Plugin stoße und dann nichts anderes mehr dazu finde 😬, entweder läuft das meiste in Jenkins nur über Plugins, oder die Plugin-Betreiber wissen, wie man sich bei google platziert..
 

mrBrown

Super-Moderator
Mitarbeiter
Zwar keine inhaltliche Antwort, aber: ich finde es ziemlich "dumm", jemand neues an sowas arbeiten zu lassen 😅 Das ist ein Thema, was einerseits fachliche Kompetenz braucht, da man das Zusammenspiel der verschiedenen Systeme und Module kennen muss und wissen muss, wie man was ändern kann, und gleichzeitig auch genug Standing braucht, um Änderungen durchzusetzen. Das jemanden machen zu lassen, der erstens fachlich gar nicht qualifiziert ist, und zweitens auch gar nicht die Möglichkeit hat, irgendwelche Änderungen durchzusetzen, ist eher ungünstig...



Aber auch noch ne inhaltliche Antwort:
Man kann Maven-Module auch unabhängig voneinander releasen – wie gut das klappt, hängt aber immer vom konkreten Projekt und den Dependencys zwischen den Modulen ab.

Im schlechtesten Fall ist das relativ eng gekoppelt, sodass unabhängiges bauen schon dadurch gar nicht möglich ist. In dem Fall bleibt einem nichts anderes übrig, als die Entwicklern zu besseren Konzepten zu drängen, und die auch hart durchzusetzen.

Im besten Fall ist das alles relativ entkoppelt und es gibt gar keine Abhängigkeiten, dann lässt sich alles problemlos bauen – das Problem liegt dann eher an der Stelle, was genau man wann und wie baut und wie man versioniert.
Einfache versionierung über Tags scheidet dann aus, die gelten für das gesamte Repo, nicht nur für einen Teil, man muss also (wie @LimDul grad schon schrieb) entweder Tags durch z.B. Präfixe unterscheidbar machen, oder man verzichtet ganz auf Tags – beides ist aber je nach Einsatzzweck eher unschön und nicht unbedingt sinnvoll. Potentiell ist da Versionierung direkt über Maven unabhängig von Tags am einfachsten – da muss man sich aber dann z.T. selbst drum kümmern.
Das "was muss gebaut werden" ist auch nicht unbedingt super einfach, bzw muss man die passende Lösung finden, und über Fingerprints etc arbeiten, damit ein Job nur gebaut wird, wenn sich das Teilprojekt auch geändert hat.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Git - Nur einen Branch (z.B. Master) in ein Repository pushen Tools - Maven, Gradle, Ant & mehr 12
M jpackage zusätzlich zu deb installer auch einen windows installer bauen Tools - Maven, Gradle, Ant & mehr 9
8u3631984 Gradle : Baue anderes Modul und packe es in einen Docker Container Tools - Maven, Gradle, Ant & mehr 0
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
K Jenkins Konfiguration für einen multi-module Maven Projekt Tools - Maven, Gradle, Ant & mehr 2
G Ant Hudson/Jenkins, Ant und JUnit unter einen Hut bringen Tools - Maven, Gradle, Ant & mehr 12
L Mit Ant/Maven einen RCP-Application exportieren? Tools - Maven, Gradle, Ant & mehr 2
V Suche einen Installer Tools - Maven, Gradle, Ant & mehr 4
H Problem mit einen Applet Tools - Maven, Gradle, Ant & mehr 5
J Applet das einen Mittelwert ausrechnen soll Tools - Maven, Gradle, Ant & mehr 10
F Hilfe, wie programmiert man einen Packer mit Java? Tools - Maven, Gradle, Ant & mehr 2
J Dateien auf einen anderen Rechner bekommen Tools - Maven, Gradle, Ant & mehr 8
C .nur noch einen hyperLINK einbauen Tools - Maven, Gradle, Ant & mehr 29
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
Encera Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5

Ähnliche Java Themen

Neue Themen


Oben