Alguna forma de parametrizar la versión de un pom.xml?

afhn

Buenas compañeros,

Tengo un pequeño problemilla y a ver si alguien podría echarme una mano.
Tengo un proyecto padre con su pom, del cual cuelgan varios módulos con sus poms cada uno de ellos, y dentro de esos módulos cuelgan otros proyectos con sus poms.

Digamos que es algo tal que así:
    Proyecto_Padre
    ---> pom.xml
                Módulo_A
                 ---> pom.xml
                           Módulo_A_proyecto_1
                           ---> pom.xml
                           Módulo_A_proyecto_2
                           ---> pom.xml 
                Módulo_B
                 ---> pom.xml
                           Módulo_B_proyecto_1
                           ---> pom.xml
                           Módulo_B_proyecto_2
                           ---> pom.xml 

Quiero gestionar las versiones a través del pom padre o de una variable en un fichero properties de forma que no tenga que cambiar las versiones de todos los módulos cada vez que cambie la versión del proyecto principal, de forma que tengo un mejor control de las versiones de todos los módulos sin que se me pase ninguno y que se haga de forma automatizada, vamos, lo que sería parametrizar la versión del pom.xml principal.

Alguien sabe de alguna forma? La verdad es que soy bastante inexperto en este tema y me hallo algo perdido. Agradecería la ayuda.

Troyer

Que tal usar un superpom para poner la versión y el resto lo herede?

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html
http://maven.apache.org/ref/3.0.4/maven-model-builder/super-pom.html

1 respuesta
afhn

#2 algo de eso estoy buscando, en plan definir la versión en el pom principal y que el resto de poms lo hereden, así sólo necesitar cambiar la versión en el principal. Pero no sé cómo ><.
voy a ojear esos links.

1 respuesta
Troyer

#3 aquí tienes más info: https://howtodoinjava.com/maven/maven-parent-child-pom-example/

1 respuesta
afhn

#4 el segundo link es básicamente lo que tengo hecho, tengo el parent con dependencias y los hijos lo heredan, lo que quiero que hereden también es la versión del proyecto, la versión del artefacto padre.

1 respuesta
Troyer

#5 Pues aquí tienes la solución: https://stackoverflow.com/questions/10582054/maven-project-version-inheritance-do-i-have-to-specify-the-parent-version/51969067#51969067

Con ${revision} deberías de coger la versión del parent.

Y controlas las versiones con el mvn cli (cliente maven)

mvn -Drevision=1.0.0-SNAPSHOT clean package

https://maven.apache.org/maven-ci-friendly.html

2 respuestas
afhn

#6 con lo de revision me lo pilla el módulo hijo, pero cuando lo intento hacer con los proyectos hijos del módulo, no deja, incluso definiendo el properties;

<parent>
        <groupId>xx</groupId>
        <artifactId>xx_xx</artifactId>
        <version>${revision}</version>
</parent>
afhn

#6 haciendo lo de las páginas esas, no consigo pasar del siguiente error

The project xx:xx_lib_comunes_utils:${revision} (C:\xx\xx\xx_lib_comunes_utils\pom.xml) has 1 error
[ERROR]     'dependencies.dependency.version' for xx:xx_lib_comunes_database:jar must be a valid version but is '${revision}'. @ xx:xx_lib_comunes_utils:${revision}, C:\xx\xx\xx_lib_comunes_utils\pom.xml...

en el pom padre lo tengo definido así

<properties>
        <revision>1.0.2</revision>
</properties>

intento hacer después en uno de los hijos para incluir un módulo como jar dentro de otro módulo con esto y peta de la otra forma en el clean install:

<dependency>
       <groupId>xx</groupId>
       <artifactId>xx_lib_comunes_database</artifactId>
       <version>${revision}</version>
</dependency>
1 respuesta
Troyer

#8 Tienes maven +3.5, no?

1 respuesta
afhn

#9 a ver si va a ser eso....
estoy con java 6 y eclipse luna, supongo que será la v2.5 o alguna inferior, no?
no tengo instalado la variable del path para ver la versión el cmd, pero me imagino que será eso.
tendré que mirar a ver si puede apuntar el pom.xml en la versión a una variable en algún file.properties.

Usuarios habituales

  • afhn
  • Troyer