Wenn Sie ein übergeordnetes Projekt haben, können Sie die Version im übergeordneten pom festlegen und in den untergeordneten Projekten können Sie mit der auf Geschwisterbibliotheken verweisen ${Projekt.Version} oder ${version} Eigenschaften.
Wenn Sie vermeiden möchten, die Version des Elternteils in jedem Kind zu wiederholen: Sie können dies tun:
Derzeit habe ich einen übergeordneten Pom, aber ich muss dort eine Version haben, was bedeutet, dass jeder Pom eine bestimmte Version des übergeordneten Pom hat.
– Jan Pešta
2. Oktober 2013 um 8:38 Uhr
[WARNING] Beim Erstellen des effektiven Modells für company:group1:pom:1.1.2-SNAPSHOT sind einige Probleme aufgetreten [WARNING] ‘Version’ enthält einen Ausdruck, sollte aber eine Konstante sein. @ company:maven-test:${my.version}, [WARNING] [WARNING] Es wird dringend empfohlen, diese Probleme zu beheben, da sie die Stabilität Ihres Builds gefährden. [WARNING] [WARNING] Aus diesem Grund unterstützen zukünftige Maven-Versionen das Erstellen solcher fehlerhafter Projekte möglicherweise nicht mehr.
– Jan Pešta
2. Oktober 2013 um 21:15 Uhr
Mit der neuen Version von Maven wird diese Funktion nicht mehr funktionieren!
– Jalousien
20. März 2018 um 11:55 Uhr
Es hat bei mir mit Maven 3.5.4 funktioniert, beachten Sie, dass weder 3.5.2 noch 3.6.0 funktioniert haben.
– Searene
7. März 2019 um 6:12 Uhr
Befolgen Sie besser die anderen Antworten mit mvn versions:set – die Menge an Ärger, die Sie mit Versionen als Eigenschaften haben werden, ist es einfach nicht wert
– Bart Robeyns
27. Februar 2021 um 16:59 Uhr
ACV
Die richtige Antwort ist diese (Beispielversion):
In der übergeordneten pom.xml sollten Sie (nicht Innerhalb properties):
<version>0.0.1-SNAPSHOT</version>
In allen untergeordneten Modulen sollten Sie Folgendes haben:
Um nun die Version zu aktualisieren, gehen Sie wie folgt vor:
mvn versions:set -DnewVersion=0.0.2-SNAPSHOT
mvn versions:commit # Necessary to remove the backup file pom.xml
und alle Ihre 400 Module haben die übergeordnete Version aktualisiert.
Und dies hat die pom.xml-Dateien geändert, was bedeutet, dass der nachfolgende Build aus geändertem Quellcode erfolgt, was ich anstößig finde.
– Bob Glocke
13. März 2019 um 19:22 Uhr
@BobBell Es ist nicht möglich, die Version zu aktualisieren, ohne pom-Dateien zu ändern.
– ACV
5. September 2019 um 15:57 Uhr
@ACV Das stimmt nicht. Sie können mit einer alternativen Version von Ihnen bauen ${revision} und passieren -Drevision auf der Kommandozeile.
– Bob Glocke
6. September 2019 um 17:54 Uhr
@BobBell , ich passiere nur die Befehlszeile, aber im Ordner .m2 wird pom nicht mit dem Platzhalterwert aktualisiert. könnten Sie mir bitte helfen, dieses Problem zu lösen
– Entw
4. November 2020 um 6:40 Uhr
@Dev Benutzt du -Drevisionoder -DnewVersion? Über die Befehlszeile können nur begrenzte Eigenschaften aktualisiert werden. Sehen maven.apache.org/maven-ci-friendly.html
– Bob Glocke
5. November 2020 um 18:43 Uhr
Die Verwendung einer Eigenschaft für die Version generiert die folgende Warnung:
[WARNING]
[WARNING] Some problems were encountered while building the effective model for xxx.yyy.sandbox:Sandbox:war:0.1.0-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ xxx.yyy.sandbox:Sandbox:${my.version}, C:\Users\xxx\development\gwtsandbox\pom.xml, line 8, column 14
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
Wenn Ihr Problem darin besteht, dass Sie die Version an mehreren Stellen ändern müssen, weil Sie die Version wechseln, dann ist es richtig, das Maven Release Plugin zu verwenden, das dies automatisch für Sie erledigt.
Können Sie erklären, wie das Maven-Release-Plugin dieses Problem behebt?
– Basilikum Musa
14. Dezember 2015 um 19:35 Uhr
Nun, es behebt das gemeldete Problem tatsächlich nicht, da dies nicht der richtige Weg ist, also sollten Sie die Version Ihres Projekts nicht in einer Eigenschaft festlegen. Wenn Ihr Projekt mehrere Module hat, dann ist es das Richtige, das Release-Plug-in die Arbeit des Änderns der Version in allen pom.xml-Dateien für Sie erledigen zu lassen.
– Constantino Cronemberger
16. Dezember 2015 um 10:38 Uhr
Ich würde sagen, dass die Verwendung des Maven-Release-Plugins der richtige Weg ist. In unserem Fall verwenden wir den Befehl update POM, um die Version aller Module wie folgt auf das übergeordnete Modul zu setzen: mvn release:update-versions -DautoVersionSubmodules=true
– Mihkel Selgal
4. Mai 2016 um 7:58 Uhr
Dies beinhaltet die Modifikation des POM, was bedeutet, dass eine quellcodegesteuerte Datei jetzt modifiziert wird, was ich verwerflich finde.
– Bob Glocke
13. März 2019 um 20:00 Uhr
Ziel ist es, die Version zu ändern. Die Diskussion hier ist, ob dies an einem einzigen Ort durchgeführt werden kann oder nicht.
Bei dem bereitgestellten Pom wird der Eigenschaftswert nicht aufgelöst, sodass jeder, der von diesem Pom abhängt, die Abhängigkeit als die mit ${ } nicht interpolierte Zeichenfolge erkennt, und viel Heiterkeit wird in Ihrem Build-Prozess entstehen.
in Maven 2.1.0 und/oder 2.2.0 wurde versucht, Poms mit aufgelösten Eigenschaften bereitzustellen … dies brach mehr als erwartet, weshalb diese beiden Versionen nicht empfohlen werden, da 2.2.1 die empfohlene 2.x-Version ist .
Kariem
Mit einer Maven-Version von 3.5 oder höher sollten Sie in der Lage sein, einen Platzhalter (z ${revision}) im übergeordneten Abschnitt und im Rest des POM können Sie verwenden ${project.version}.
Tatsächlich können Sie GAV-Eigenschaften auch außerhalb von weglassen <parent> die gleich sind, da sie vererbt werden. Das Ergebnis würde in etwa so aussehen:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>build.parent</artifactId>
<groupId>company</groupId>
<version>${revision}</version> <!-- use placeholder -->
<relativePath>../build.parent</relativePath>
</parent>
<artifactId>artifact</artifactId>
<!-- no 'version', no 'groupId'; inherited from parent -->
<packaging>eclipse-plugin</packaging>
...
</project>