Ich habe einen Artefakt, das für mehrere Zielplattformen gebaut werden soll:Synchronisieren von Artefakt-Versionen auf allen Plattformen mit Maven Release-Prozess
- Linux x86
- Windows-x86
- ARM11
Leider wegen Aufgrund des Fehlens von Crosscompilern ist es nicht möglich, alle Versionen des Artefakts auf einmal zu erstellen.
Mit anderen Worten, das Ziel ist im Repository so etwas wie dieses
- artifact-1.0.0-linux.zip
- artifact-1.0.0-windows.zip
- Artefakt haben -1.0.0-arm11.zip
- artifact-1.0.1-linux.zip
- artifact-1.0.1-windows.zip
- artifact-1.0.1-arm11.zip
- ...
Beachten Sie, dass die Versionen synchron sind. Wie erreiche ich das?
Die Sache ist, dass der Release-Prozess Version der pom.xml nach jedem Build aktualisiert. So durch nacheinander auf verschiedenen Plattformen bauen kann ich erreichen,
- artifact-1.0.0-linux.zip
- artifact-1.0.1-windows.zip
- artifact-1.0.2-arm11.zip mit
- artifact-1.0.3-linux.zip
- artifact-1.0.4-windows.zip
- artifact-1.0.5-arm11.zip
- ...
aber das ist nicht das, was ich suche.
Ich konnte
laufen auf Linux
mvn release: Vorbereitung Release: führen -DpushChanges = false
(mit pushChanges auf false gesetzt Release nicht Versionsnummer erhöhen in SCM)
und dann unter Windows
laufenmvn release: Release vorbereiten: führen
(dies wird die Versionsnummer erhöhen)
Aber dann die Verantwortung, die Freigabeprozesse auf verschiedenen Plattformen triggern in der richtigen Reihenfolge mit mir liegt. Gibt es eine Möglichkeit, Maven kann mir dabei helfen?
Haben Sie Vorschläge?
Dank
PS. Beachten Sie, dass es sich nicht um eine Frage handelt, wie Sie sich in Modulen organisieren können. Es geht darum, Release-Prozesse eines einzelnen Artefakts auf mehreren Plattformen zu synchronisieren.
Aber mein Punkt ist, dass wenn Sie unter Linux sind, können Sie keine Binärdatei für Windows erstellen (aufgrund einiger Toolchain-Einschränkungen). Daher kann der Build-Prozess, wenn er unter Linux ausgeführt wird, keine Windows-Binärdateien erstellen. Und umgekehrt. Sie können also nicht alle Binärdateien für alle Plattformen auf einmal erstellen. --- Dies ist keine Frage darüber, wie in Module zu organisieren. Es geht darum, Releaseprozesse eines einzelnen Artefakts auf mehreren Plattformen zu synchronisieren. –
OK, ich fürchte, Maven kann Ihnen nicht helfen, das so automatisch zu machen, wie Sie wollen, es sei denn, Sie möchten (und haben etwas Zeit) ein eigenes Release-Plugin erstellen. Wie du bereits erwähnt hast, kannst du alles tun, ohne eine Version zu stossen und dann am Ende global verbrennen, aber daran musst du dich erinnern. Sie können auch die gemeinsame Versionierung (geerbt von Parent) verwerfen und wörtlich Versionen in allen POMs der Module eingeben. Diesmal müssen Sie diesen Prozess jedoch steuern und sicherstellen, dass alle Module mit der Version freigegeben sind und jedes Modul einmal freigegeben ist. Ich kann wirklich nicht 100% automatisch sehen. –
Ich bin immer knapp bei der Zeit :) Wie auch immer, vielen Dank für die Hilfe. –