In un progetto Maven, come posso aggiornare automaticamente la versione tutti i moduli del bambino, più il genitore?
-
23-09-2019 - |
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.
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:
progettiMulti-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
atrue
. 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
- Fare la versione di tutti i sotto-progetto essere definito nella sua pom.xml genitore.
-
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>
-
Creare un altro pom.xml per raggruppare coloro progetto insieme.
<modules> <module>../xyz-parent</module> <module>../module-1</module> <module>../module-2</module> </modules>
-
Poi aggiornare la versione del progetto principale e poi costruirlo da sotto comando.
mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT mvn clean install
-
Poi aggiornare la versione del genitore che è definito in quelli sotto-progetto a quello latset
mvn -N versions:update-child-modules
-
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
.