Tengo un proyecto Maven "core". En el pom.xml del proyecto, la versión es 0.1. Utilizo una compilación parametrizada en Jenkins y establezco un parámetro de texto myNewVersion = 3.1. Asimismo, establecer los siguientes objetivos: mavenMaven deploy ignora la versión del proyecto establecida por maven-versions plugin
versions:set -DnewVersion=${myNewVersion} versions:commit deploy
Cuando la están construyendo, experto actualiza la versión en el pom.xml correctamente a "3.1". Sin embargo, la tarea de implementación de maven implementa mi proyecto como "core-0.1", siendo la versión todavía 0.1. El archivo pom incluido en el correspondiente 0.1 dir en mi Nexus indica el número de versión "3.1".
¿Qué puedo hacer para forzar a la tarea de implementación de maven a usar la versión correcta establecida por el complemento de versiones maven?
Muchas gracias por su ayuda.
EDITAR 1: Para aclarar mis necesidades: La versión del proyecto en el POM no debe indicar una versión de compilación real. Lo uso para determinar la compatibilidad de mi proyecto "central" con los sistemas y API subyacentes. Más detalladamente: El proyecto "core" obtiene un parámetro "interfaceVersion = 3.1" o "interfaceVersion = 4.0" de jenkins. Esto determina qué versión utiliza mi proyecto principal para su dependencia a otro paquete de "bibliotecas".
Ahora tengo dos trabajos de compilación de Jenkins, uno para 3.1 y uno para 4.0 dependencia de proyecto de biblioteca del proyecto principal. Cada uno verifica el mismo código de proyecto desde SVN, pero pasa un parámetro de versión diferente al proyecto "núcleo" que se está construyendo. Deseo utilizar este número de versión como el número de versión de mi proyecto en el pom.xml Y como el número de versión de mi jar que se implementa en el nexo (es decir, core-3.1.jar o core-4.0.jar).
Editar 2: He venido un poco más lejos. Solo uso el parámetro de versión que establecí en jenkins como parámetro en mi sección de compilación parametrizada como el número de versión del proyecto en el archivo pom. Maven advierte sobre hacer esto, pero funciona. Sin embargo, todos mis proyectos que dependen de "núcleo" ahora necesitan especificar "$ {myNewVersion}" como la versión de dependencia, también.
Por lo tanto, trato de utilizar las versiones-maven-plugin nuevamente para establecer/sobrescribir la versión en el archivo pom, tal como dije anteriormente. Sin embargo, ahora recibo un error de "Acceso denegado" cuando uso maven deploy. Si elimino las "versiones: set -DnewVersion = $ {myNewVersion} versions: commit" y solo uso "deploy", funciona. ¿Alguna pista de cómo resolver esto?
Por qué no usar el plugin de liberación? – khmarbaise
Versiones de AFAIK: commit realmente no se compromete con SCM, esto podría hacerse por versión: commit ... – khmarbaise
Según lo sugerido por @khmarbaise, pruebe el complemento M2_release. Automatizará el control de versiones POM y se ocupará de su etiquetado/etiquetado SCM: https://wiki.jenkins-ci.org/display/JENKINS/M2+Release+Plugin –