Dans un projet Maven, comment puis-je mettre à jour automatiquement la version tous les modules de l'enfant, ainsi que le parent?

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

Question

J'ai un projet multi-module.

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

Quand j'exécute la libération mvn: il prépare vérifier que POM parent a une version snapshot et tous les modules dépendants ne disposent pas d'une version snapshot. Comment mettre à jour automatiquement tous les modules enfants de INSTANTANÉ à la prochaine version de version?

Je voudrais incrémenter automatiquement la version pour tous les modules.

Était-ce utile?

La solution

Le plugin de libération peut gérer cela. Avez-vous vérifié Mise à jour des versions POM ? Mais... Je ne comprends pas quelque chose. Changer la version dans les POMs de x-SNAPSHOT à une nouvelle version et heurtant la version dans les POMs à une nouvelle valeur y-SNAPSHOT devrait être fait par release:prepare comme expliqué dans Préparer un de sortie. Qu'est-ce qui ne va pas lors de l'utilisation de cet objectif?

Mise à jour: le paramètre de autoVersionSubmodules peut-être ce que vous cherchez. De Préparer une version exemple:

  

Projets multi-modules

     

Vous êtes invité à la version   nombre pour chaque module du projet.   Si vous préférez que tous les modules se   la même version que le POM parent,   vous pouvez définir l'option   autoVersionSubmodules à true. Maintenant, c'est à votre tour   sera demandé qu'une seule fois pour la   version et la prochaine version   version de développement.

Snippet de parent 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>

Autres conseils

Une façon flexible pour définir versions POMS, projets multi-modules inclus, est Versions plugin Maven .

mvn versions:set -DnewVersion=your_new_version

Il ajustera toutes les versions de pom, les versions des parents et des enfants dans les versions d'un projet multi-modules.

puis

mvn versions:commit

ou

mvn versions:revert
  1. Faites la version de tous les sous-projet soit défini dans sa pom.xml mère.
  2. Assurez-vous que toutes les versions sous-projets sont les mêmes à la version de leurs parents.

    <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. Créer un autre pom.xml de regrouper ces projets ensemble.

    <modules>   
      <module>../xyz-parent</module>
      <module>../module-1</module>
      <module>../module-2</module>      
    </modules>
    
  4. puis mettre à jour la version du projet parent, puis construire par commande ci-dessous.

    mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT
    mvn clean install
    
  5. puis mettre à jour la version du parent qui est défini dans les sous-projet à celui latset

    mvn -N versions:update-child-modules
    
  6. Ensuite, les construire ensemble.

    @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
    

Il y a une option potentiellement mieux sur https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment -tabpanel # commentaire-14415968

C'est une solution de contournement pour le fait que vous ne pouvez pas se référer à la pom de haut niveau dans les poms sous-module sans avoir une version explicite la liste. (Qui est ce bug MNG-624 est sur le point) Il explique comment vous pouvez avoir un seul emplacement pour la version (dans un fichier profiles.xml haut niveau), et ont tout simplement une des références de propriété dans tous les fichiers pom.xml (à savoir $ {} currentVersion)

Toutefois, dans le présent communiqué de schéma: préparer sera probablement pas mise à jour profiles.xml pour vous

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top