multi library example create maven-2 maven-release-plugin multi-module

maven-2 - library - maven multi project



En un proyecto de Maven, ¿cómo puedo actualizar automáticamente la versión de todos los módulos secundarios, más el principal? (4)

  1. Haga que la versión de todos los subproyectos se defina en su pom.xml principal.
  2. Asegúrese de que todas las versiones de los subproyectos sean las mismas que las de sus padres.

    <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. Cree otro pom.xml para agrupar esos proyectos juntos.

    <modules> <module>../xyz-parent</module> <module>../module-1</module> <module>../module-2</module> </modules>

  4. Luego, actualice la versión del proyecto principal y luego compílelo con el siguiente comando.

    mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT mvn clean install

  5. Luego, actualice la versión para padres que está definida en esos subproyectos al latset one

    mvn -N versions:update-child-modules

  6. Entonces constrúyelos juntos.

    @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

Tengo un proyecto multi-modulo.

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

Cuando ejecuto la versión mvn: prepárela verifique que el POM principal tenga una versión SNAPSHOT y que todos los módulos dependientes no tengan una versión SNAPSHOT. ¿Cómo actualizar automáticamente todos los módulos secundarios de SNAPSHOT a la próxima versión?

Me gustaría incrementar automáticamente la versión para todos los módulos.


Hay una opción potencialmente mejor en https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14415968

Esta es una solución para el hecho de que no se puede referir al pom de nivel superior en los poms del submódulo sin tener una versión explícita en la lista. (de lo que se trata el error MNG-624) Explica cómo puede tener una única ubicación para la versión (en un archivo de nivel superior profiles.xml), y simplemente tiene referencias de propiedad en todos los archivos pom.xml (es decir, $ {currentVersion})

Sin embargo, en esta versión de esquema: preparar probablemente no actualizará los perfiles.xml por usted.


Una forma flexible de configurar versiones poms, incluidos los proyectos de múltiples módulos, es Versions Maven Plugin .

mvn versions:set -DnewVersion=your_new_version

Ajustará todas las versiones de pom, versiones de padres y versiones de niños en un proyecto de múltiples módulos.

entonces

mvn versions:commit

o

mvn versions:revert


El plugin de liberación puede manejar eso. ¿ Revisó la actualización de las versiones de POM ? Pero ... no consigo algo. Cambiar la versión en los POM de x-SNAPSHOT a una nueva versión y cambiar la versión en los POM a un nuevo valor y-SNAPSHOT debe hacerse por release:prepare como se explica en Preparar una versión . ¿Qué está mal al usar este objetivo?

Actualización: el parámetro autoVersionSubmodules puede ser lo que está buscando. Del ejemplo de Prepare a Release :

Proyectos multi-modulo

Se le pedirá el número de versión de cada módulo del proyecto. Si prefiere que cada módulo obtenga la misma versión que el POM principal, puede establecer la opción autoVersionSubmodules en true . Ahora solo se le pedirá una vez la versión de lanzamiento y la próxima versión de desarrollo.

Fragmento de pom.xml padre

<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>