perform - maven release plugin example
Cómo obtener una propiedad de línea de comandos para sobrescribir una propiedad de Maven (1)
Tengo un archivo pom en el que los números de versión de algunas dependencias dependen de la propiedad de versión del proyecto especificada en la configuración del archivo pom. ¿Puedo sobrescribir esto a través de la línea de comandos? ¿Si es así, cómo?
Aquí está la larga historia:
Actualmente estamos haciendo la transición de nuestros proyectos a maven, pero aún no hemos llegado al final. Existen múltiples módulos que aún no se han construido con maven y, por lo tanto, son dependencias en nuestro proyecto (están integrados en tarros a través de ant). Una vez liberados, queremos que todos estos archivos se creen y contengan el mismo número de versión que el proyecto principal. Para un lanzamiento, se realizan dos pasos (hasta que podamos obtener todo utilizando maven)
- Los frascos están construidos en ant con la versión de lanzamiento correcta (12.12.4.0).
- El complemento de lanzamiento de Maven se utiliza para implementar el proyecto en nuestro repositorio de artefactos.
En el segundo paso, los argumentos de la línea de comando se utilizan para especificar el lanzamiento:
mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0
Me gustaría que el archivo pom se actualice con la versión especificada. Sin embargo, cuando se ejecuta este comando, la versión dentro del archivo pom (12.12.4.0-SNAPSHOT) todavía se está utilizando. Esto falla en el paso de "verificación de dependencias y complementos para instantáneas" y debo resolver mis archivos que aún tienen la versión 12.12.4.0-SNAPSHOT utilizada de la propiedad de la versión maven.
Esto me llevó a la pregunta original de cómo puedo anular esto para que la versión se resuelva a la especificada en la línea de comandos. Preguntas adicionales que me podrían hacer pasar esto es: ¿Cómo permitir que el complemento de versión de Maven actualice el archivo pom antes de esta comprobación? Cómo omitir la verificación de instantáneas (no deseable)
Podría crear una propiedad dentro del archivo pom que puedo sobrescribir, pero luego tendría que mantener el número de versión en dos lugares dentro del archivo pom.
¿Pensamientos?
Ponga los parámetros directamente en pom desde la línea de comandos, por ejemplo:
mvn clean install -Dtestng.version=6.3.1
Ejemplo:
<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>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0.0</version>
<name>test</name>
<properties>
<testng.version>6.4</testng.version>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Si lo ejecuta normalmente se utilizará la versión 6.4 de testng. Pero si lo ejecuta como: mvn clean install -Dtestng.version=6.3.1
testng se utilizará la versión 6.3.1.
Ver Setting Maven params en Jenkins