En un proyecto Maven, ¿cómo puedo actualizar automáticamente la versión de todos los módulos del niño, además de los padres?
-
23-09-2019 - |
Pregunta
Tengo un proyecto de varios módulos.
parent POM (1.0-SNAPSHOT) |-- module1 (1.0-SNAPSHOT) |-- module2 (1.0-SNAPSHOT) `-- module3 (1.0-SNAPSHOT)
Cuando ejecuto liberación mvn: preparo POM verificar que los padres tiene una versión de instantáneas y todos los módulos dependientes no tienen una versión INSTANTÁNEA. Cómo actualizar automáticamente todos los módulos niño desde instantáneas hasta la próxima versión?
Me gustaría versión de la subasta de forma automática para todos los módulos.
Solución
El plug-in de liberación puede manejar eso. ¿Ha comprobado Actualizando POM Versiones ? Pero...
No entiendo algo. Cambio de la versión en el POM de x-INSTANTÁNEA a una nueva versión y chocar la versión de los POM a un nuevo valor y-INSTANTÁNEA debe ser realizado por release:prepare
como se explica en Preparar una lanzamiento. Lo que va mal cuando se utiliza este objetivo?
Actualización: El autoVersionSubmodules
parámetro podría ser lo que estás buscando. Desde el Prepare ejemplo un estreno :
proyectos multi-módulo
Se le pedirá para la versión número para cada módulo del proyecto. Si prefiere que cada módulo se la misma versión que el POM padres, puede establecer la opción
autoVersionSubmodules
atrue
. Ahora tu se le pedirá una sola vez para el versión de lanzamiento y el siguiente el desarrollo de versiones.
De fragmentos de matriz 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>
Otros consejos
Una forma flexible para conjunto versiones poms, proyectos de varios módulos incluidos, es Maven Plugin .
mvn versions:set -DnewVersion=your_new_version
Se ajustará todas las versiones del pom, las versiones de los padres y las versiones de los niños en un proyecto de varios módulos.
entonces
mvn versions:commit
o
mvn versions:revert
- Haga la versión de todos los sub-proyecto se definirá en su pom.xml padres.
-
Asegúrese de que todas las versiones de sub-proyectos son los mismos a la versión 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>
-
Cree otra pom.xml agrupar los proyectos en conjunto.
<modules> <module>../xyz-parent</module> <module>../module-1</module> <module>../module-2</module> </modules>
-
A continuación, actualice la versión del proyecto principal y luego construirlo por debajo de comandos.
mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT mvn clean install
-
A continuación, actualice la versión de los padres que se define en los sub-proyecto para el latset
mvn -N versions:update-child-modules
-
A continuación, construirlos 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
Hay una potencialmente mejor opción sobre la dirección https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment -tabpanel # comment-14415968
Esto es una solución para el hecho de que no se puede hacer referencia a la pom nivel superior en los poms del sub-módulo sin tener una versión explícita en la lista. (Que es lo bug MNG-624 es aproximadamente) En él se explica cómo se puede tener una única ubicación para la versión (en un archivo profiles.xml de nivel superior), y simplemente tener una referencia de propiedad en todos los archivos pom.xml (es decir, $ {} currentVersion)
Sin embargo, en este comunicado esquema:. Preparar probablemente no va a actualizar profiles.xml para usted