In un progetto Maven, come posso aggiornare automaticamente la versione tutti i moduli del bambino, più il genitore?

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

Domanda

Ho un progetto multi-modulo.

parent POM (1.0-SNAPSHOT)
|-- module1 (1.0-SNAPSHOT)
|-- module2 (1.0-SNAPSHOT)
`-- module3 (1.0-SNAPSHOT)

Quando eseguo rilascio mvn: preparo verificare che POM genitore ha una versione snapshot e tutti i moduli dipendenti non hanno una versione SNAPSHOT. Come aggiornare automaticamente tutti i moduli del bambino, dalle foto alla versione successiva?

Vorrei automaticamente incrementare la versione per tutti i moduli.

È stato utile?

Soluzione

Il plugin di rilascio in grado di gestire questo. Hai controllato Aggiornamento Versioni POM ? Ma... Non capisco una cosa. Modifica della versione nelle POMs da x-SNAPSHOT ad una nuova versione e urtare la versione nelle POMs in un valore y-SNAPSHOT deve essere svolto da release:prepare come spiegato in Preparare un'uscita . Ciò che sta andando male quando si utilizza questo obiettivo?

Aggiornamento: Il parametro autoVersionSubmodules potrebbe essere quello che stai cercando. Dal Preparare un'uscita esempio:

  progetti

Multi-module

     

Verrà richiesto per la versione   numero per ogni modulo del progetto.   Se si preferisce che ogni modulo ottiene   la stessa versione del POM genitore,   è possibile impostare l'opzione   autoVersionSubmodules a true. Ora tu   verrà chiesto solo una volta per la   versione di rilascio e la prossima   versione di sviluppo.

Snippet di genitore 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>

Altri suggerimenti

Un modo flessibile per impostare le versioni pon, multi-moduli progetti inclusi, è Versioni Maven Plugin .

mvn versions:set -DnewVersion=your_new_version

Si regolerà tutte le versioni pom, le versioni controllanti e versioni per bambini in un progetto multi-modulo.

poi

mvn versions:commit

o

mvn versions:revert
  1. Fare la versione di tutti i sotto-progetto essere definito nella sua pom.xml genitore.
  2. Assicurarsi che le versioni tutti i sub-progetti sono la stessa versione dei loro genitori.

    <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. Creare un altro pom.xml per raggruppare coloro progetto insieme.

    <modules>   
      <module>../xyz-parent</module>
      <module>../module-1</module>
      <module>../module-2</module>      
    </modules>
    
  4. Poi aggiornare la versione del progetto principale e poi costruirlo da sotto comando.

    mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT
    mvn clean install
    
  5. Poi aggiornare la versione del genitore che è definito in quelli sotto-progetto a quello latset

    mvn -N versions:update-child-modules
    
  6. Poi li costruire insieme.

    @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
    

Non è un'opzione potenzialmente migliore sopra a https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment -tabpanel # comment-14415968

Questa è una soluzione per il fatto che non si può fare riferimento al livello superiore pom pom nei sub-moduli senza avere una versione esplicita elencati. (Che è quello che bug MNG-624 è di circa) E spiega come si può avere una singola posizione per la versione (in un file Profiles.xml di alto livello), e semplicemente avere una proprietà riferimenti in tutti i file pom.xml (vale a dire $ {} currentVersion)

Tuttavia, in questa versione schema: preparare probabilmente non aggiornerà Profiles.xml per voi

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top