Maven versioning mejores prácticas

Cuál es la mejor manera de cambiar la versión del proyecto Maven, lanzar esta versión y luego volver al desarrollo *-SNAPSHOT .

Actualmente estoy haciendo lo siguiente:

  • recuperar la versión actual (muy probablemente con SNAPSHOT ) de pom.xml
  • versión de incremento ( mvn -DnewVersion= versions:set ), respetando las reglas descritas en la pregunta Maven artefact version for patches
  • mvn:install para enviar al repository
  • cambiar el nombre de la versión una vez más, agregar SNAPSHOT postfix.
  • realizar cambios (usando algún sistema de control de versiones)

Tengo una fuerte sensación de que estoy haciendo algo mal y / o ineficiente.

Debes usar el maven-release-plugin para liberar tus artefactos. De forma automática, todas sus versiones se incrementarán con el complemento de publicación. La excepción podría ser si va de 1.0.3-SNAPSHOT a 1.1.0-SNAPSHOT. La línea de tiempo para desarrollar con Maven es:

 1.0.0-SNAPSHOT 1.0.0 1.0.1-SNAPSHOT 1.0.1 1.0.2-SNAPSHOT 1.0.2 .. 

Para ir al paso de una SNAPSHOT a una versión de lanzamiento, debe usar el complemento de lanzamiento de maven, puede lanzar un artefacto simplemente usando:

Primer paso:

 mvn release:prepare 

El último paso:

 mvn release:perform 

Si desea aceptar los valores predeterminados, simplemente puede agregar -B like:

 mvn -B release:prepare 

o puede combinar esos pasos en uno solo:

 mvn -B release:prepare release:perform 

Lo anterior también puede usarse desde dentro de una solución de CI.

El uso de mvn install solo tiene la intención de instalar los artefactos en su repository local. Si está trabajando con uno real, como un administrador de repositorys (que puedo recomendar), debe usar:

 mvn deploy 

Un requisito para usar el complemento de lanzamiento es configurar el área scm en su pom (espero que esté usando un control de versión?).

Si quieres más control sobre la fase de lanzamiento, el maven-release-plugin (mrp) no te ayudará mucho.

En ese caso, he modificado las versiones-maven-plugin para poder incrementar la versión y también para agregar / eliminar el sufijo SNAPSHOT .

Gracias a estas nuevas características, puede escribir secuencias de comandos que hacen lo mismo que mrp, pero tiene control total sobre cada paso.

Por ejemplo, mrp confirma la versión modificada antes de intentar construirla. Si la construcción falla, debes revertir esa confirmación o, en el caso de SVN, tienes que hacer otra inversión de confirmación.

Nota: No soy el autor original de la función de incremento. Lo he adoptado de autoincrement-versions-maven-plugin, como se indica en la página de github.