In einem Maven-Projekt, wie kann ich ein Update automatisch die Version alle untergeordneten Module, sowie die Eltern?
-
23-09-2019 - |
Frage
Ich habe ein Multi-Modul-Projekt.
parent POM (1.0-SNAPSHOT) |-- module1 (1.0-SNAPSHOT) |-- module2 (1.0-SNAPSHOT) `-- module3 (1.0-SNAPSHOT)
Wenn ich MVN Release ausführen: bereiten Sie es, dass die Mutter POM überprüfen hat eine Snapshot-Version und alle abhängigen Module haben keine SNAPSHOT Version. Wie automatisch aktualisiert alle untergeordneten Module von Schnappschüssen bis zu der nächsten Release-Version?
Ich würde für alle Module automatisch Schritt Version mag.
Lösung
Die Release-Plugin kann damit umgehen. Haben Sie überprüfen Updating POM Versionen ? Aber...
Ich habe nicht etwas. Ändern die Version in dem POMs von x-SNAPSHOT auf eine neue Version und die Version in dem POMs auf einen neuen Wert zu stoßen y-snapshot sollte durch release:prepare
erfolgen, wie erklärt in eine Veröffentlichung vorbereiten. Was läuft falsch, wenn dieses Ziel mit?
Update: Die autoVersionSubmodules
Parameter sein könnte, was Sie suchen. Von dem Bereiten Sie eine Veröffentlichung Beispiel:
Multi-Modul-Projekte
Sie werden für die Version aufgefordert werden, Nummer für jedes Modul des Projekts. Wenn Sie es vorziehen, dass jedes Modul bekommt die gleiche Version wie die übergeordneten POM, Sie können die Option
autoVersionSubmodules
zutrue
. Jetzt du wird für die nur ein einziges Mal aufgefordert werden, Release-Version und die nächste Entwicklungsversion.
Snippet von Eltern pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>x.y.z</version>
<configuration>
<goals>deploy</goals>
<autoversionsubmodules>true</autoversionsubmodules>
</configuration>
</plugin>
</plugins>
</build>
Andere Tipps
Eine flexible Art und Weise zu Satz Poms Versionen, Projekte Multi-Module enthalten, ist Versionen Maven Plugin .
mvn versions:set -DnewVersion=your_new_version
Es wird passen Sie alle pom Versionen, Eltern Versionen und Kinder-Versionen in einem Multi-Modul-Projekt.
dann
mvn versions:commit
oder
mvn versions:revert
- Stellen Sie die Version alle Teilprojektes in seinem übergeordneten pom.xml definiert werden.
-
Stellen Sie sicher, dass alle Teilprojekte Versionen gleich sind zu der Eltern-Version.
<groupId>com.xyz</groupId> <artifactId>module-1</artifactId> <packaging>jar</packaging> <parent> <groupId>com.xyz</groupId> <artifactId>xyz-parent</artifactId> <version>1.0.123-SNAPSHOT</version> </parent>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>xyz-parent</artifactId> <groupId>com.xyz</groupId> <version>1.0.123-SNAPSHOT</version> <packaging>pom</packaging> <name>xyz-parent</name> <dependencyManagement> <dependencies> <!-- Message --> <dependency> <groupId>com.xyz</groupId> <artifactId>module-1</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.xyz</groupId> <artifactId>module-2</artifactId> <version>${project.version}</version> </dependency> </dependencyManagement> </project>
-
Erstellen Sie eine andere pom.xml gruppieren diejenigen Projekt zusammen.
<modules> <module>../xyz-parent</module> <module>../module-1</module> <module>../module-2</module> </modules>
-
Dann aktualisieren Sie die Version des übergeordneten Projekts und dann von unten Befehl bauen.
mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT mvn clean install
-
Dann aktualisieren Sie die Eltern-Version, die in diesem Teilprojekt zum latset eine definiert ist
mvn -N versions:update-child-modules
-
Dann bauen sie zusammen.
@echo on cd .\xyz-parent call mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT -o call mvn versions:commit -o call mvn clean install -o :::http://www.mojohaus.org/versions-maven-plugin/examples/update-child-modules.html cd ..\xyz-buildaggregate-ide call mvn -N versions:update-child-modules -o call mvn clean install -o
Es ist eine potenziell bessere Option über https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment -tabpanel # comment-14415968
Das ist eine Abhilfe für die Tatsache, dass Sie nicht auf die oberste Ebene pom in dem Untermodul Poms, ohne eine explizite Version aufgeführt beziehen. (Das ist das, was Fehler MNG-624 ist über) Es wird erläutert, wie Sie einen einzelnen Standort für die Version (in der obersten Ebene profiles.xml-Datei) haben können, und einfach ein Objekt Referenzen in allen pom.xml Dateien haben (das heißt $ {} current)
Allerdings ist in diesem Schema Release. Bereiten wird wahrscheinlich nicht profiles.xml für Sie aktualisieren