In einem Maven-Projekt, wie kann ich ein Update automatisch die Version alle untergeordneten Module, sowie die Eltern?

StackOverflow https://stackoverflow.com/questions/2341906

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.

War es hilfreich?

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 zu true. 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
  1. Stellen Sie die Version alle Teilprojektes in seinem übergeordneten pom.xml definiert werden.
  2. 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>
    
  3. Erstellen Sie eine andere pom.xml gruppieren diejenigen Projekt zusammen.

    <modules>   
      <module>../xyz-parent</module>
      <module>../module-1</module>
      <module>../module-2</module>      
    </modules>
    
  4. 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
    
  5. Dann aktualisieren Sie die Eltern-Version, die in diesem Teilprojekt zum latset eine definiert ist

    mvn -N versions:update-child-modules
    
  6. 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top