Tengo un proyecto maven multimódulo. Tenemos la intención de versionar todos estos módulos juntos. Pero a partir de ahora estoy terminando la versión de codificación dura 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>
Respuestas:
Uso
versions:set
del complemento de versiones-maven :Ajustará todas las versiones de pom, versiones primarias y versiones de dependencia en un proyecto de varios módulos.
Si cometiste un error, haz
luego, o
Si estás contento con los resultados.
Nota: esta solución asume que todos los módulos usan el pom agregado como pom padre 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 .
fuente
versions:set
se puede especificar-DgenerateBackupPoms=false
, ya que, de forma predeterminada, este complemento realiza una copia de seguridad de los archivos pom originales.versions:commit
: "Elimina la copia de seguridad inicial del pom, aceptando así los cambios".La respuesta dada supone que el proyecto en cuestión usa la herencia del proyecto además de la agregación del módulo. 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 tienen una relación padre-hijo entre el agregador POM y los módulos agregados. (Es posible que no haya una relación padre-hijo en absoluto, o los módulos hijos pueden usar un POM 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 usar el complemento Versions Maven para actualizar no solo el agregador POM sino también todos los módulos agregados; Es la
processAllModules
opción. El siguiente comando debe hacerse en el directorio del proyecto agregador:¡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 y ahorrará mucho tiempo y evitará todo tipo de problemas.
Por supuesto, no olvide confirmar los cambios en todos los módulos, lo que también puede hacer con el mismo interruptor:
Puede decidir prescindir del POMS de respaldo por completo y hacer todo en un solo comando:
fuente
versions:set
complemento es-DoldVersion='*'
, en mojohaus.org/versions-maven-plugin/set-mojo.html , dice explícitamente que esta propiedad debe especificarse al procesar un proyecto de agregación.-DprocessAllModules
realmente? A mi no me funciona.Si desea automatizar completamente el proceso (es decir, desea incrementar el número de versión sin tener que saber cuál es el número de versión actual), puede hacer esto:
fuente
-DoldVersion='*'
Es posible que desee ver el lanzamiento del complemento de lanzamiento de Maven : objetivo de actualización de versiones . Actualizará la versión del padre, así como todos los módulos que se encuentran debajo.
Actualización: Tenga en cuenta que lo anterior es el complemento de lanzamiento. Si no está lanzando, es posible que desee utilizar
versions:set
fuente
mvn release:update-versions -DautoVersionSubmodules
funcionó bien para mí, incluso si no estoy lanzando :-)Te animo a leer el libro de Maven sobre construcciones de módulos múltiples (reactores).
Me refería en particular a lo siguiente:
debe cambiarse a Aquí tenga cuidado con la versión no definida solo en la parte principal que está definida.
Este es un mejor enlace .
fuente
pom.xml
archivos, pero estoy de acuerdo (con @ ThorbjørnRavnAndersen) en que leer un libro completo para obtener esta información es excesivo. : pversions:update-child-modules
suena como lo que estás buscando. Puede hacer versiones: configure como se mencionó, pero esta es una forma ligera de actualizar los números de versión principal. Para los módulos secundarios, es mi opinión que debe eliminar las<version>
definiciones, ya que heredarán el número de versión del módulo principal.fuente
La mejor manera es que, dado que tiene la intención de agrupar sus módulos, puede especificar la
<dependencyManagement>
etiqueta en la parte más externapom.xml
(módulo principal) directamente debajo de la<project>
etiqueta. Controla la versión y el nombre del grupo. En su módulo individual, solo necesita especificar la<artifactId>
etiqueta en supom.xml
. Tomará la versión del archivo principal.fuente
la forma más fácil es cambiar la versión en cada pom.xml a una versión arbitraria. ¡luego verifique que la administración de dependencias use la versión correcta del módulo usado en este módulo! por ejemplo, si desea aumentar el control de versiones para un proyecto de módulo de remolque, debe hacer como fluir:
en el módulo childe:
y en el módulo padre:
fuente
Para actualizar pom.xml principal y la versión principal en submódulos:
fuente