Actualización de números de versión de módulos en un proyecto Maven de varios módulos

Resuelto sandeepkunkunuru asked hace 13 años • 12 respuestas

Tengo un proyecto Maven de varios módulos. Tenemos la intención de versionar todos estos módulos juntos. Pero a partir de ahora estoy terminando codificando la versión en cada uno de los módulos pom.xml como se muestra a continuación.

<parent>
    <artifactId>xyz-application</artifactId>
    <groupId>com.xyz</groupId>
    <version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>

y el módulo principal principal tiene la siguiente configuración

<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>
sandeepkunkunuru avatar Apr 20 '11 13:04 sandeepkunkunuru
Aceptado

Úselo versions:setdesde el complemento de versiones-maven :

mvn versions:set -DnewVersion=2.50.1-SNAPSHOT

Ajustará todas las versiones de pom, versiones principales y versiones de dependencia en un proyecto de varios módulos.

Si cometiste un error, hazlo.

mvn versions:revert

después, o

mvn versions:commit

si estás satisfecho con los resultados.


Nota: esta solución supone que todos los módulos utilizan el pom agregado como pom principal también, un escenario que se consideraba estándar en el momento de esta respuesta. Si ese no es el caso, busque la respuesta de Garret Wilson .

Sean Patrick Floyd avatar Apr 20 '2011 06:04 Sean Patrick Floyd

La respuesta dada supone que el proyecto en cuestión utiliza la herencia del proyecto además de la agregación de módulos. De hecho, esos son conceptos distintos:

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation

Algunos proyectos pueden ser una agregación de módulos, pero no tener una relación padre-hijo entre el agregador POM y los módulos agregados. (Es posible que no exista ninguna relación padre-hijo, o que los módulos secundarios puedan usar un POM completamente separado como "padre"). En estas situaciones, la respuesta dada no funcionará.

Después de mucha lectura y experimentación, resulta que hay una manera de utilizar el complemento Versions Maven para actualizar no solo el POM del agregador sino también todos los módulos agregados; es la processAllModulesopción. El siguiente comando debe realizarse en el directorio del proyecto agregador:

mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules

El complemento Versions Maven no solo actualizará las versiones de todos los módulos contenidos, sino que también actualizará las dependencias entre módulos. Esta es una gran victoria, ahorrará mucho tiempo y evitará todo tipo de problemas.

Por supuesto, no olvides confirmar los cambios en todos los módulos, lo que también puedes hacer con el mismo modificador:

mvn versions:commit -DprocessAllModules

Puede decidir prescindir por completo del POMS de respaldo y hacer todo con un solo comando:

mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false
Garret Wilson avatar Mar 13 '2018 00:03 Garret Wilson