Lanzamiento de Maven de un candidato o una twig de lanzamiento labeldo

Considere la siguiente situación: Tengo un proyecto en desarrollo usando maven como herramienta de compilation y svn o alguna otra herramienta para el control de versiones.

En algún momento, decido que "probablemente" esté listo para su lanzamiento y configuré una label svn para marcarla como release candidate

 + Trunk (0.0.1-SNAPSHOT) | +----------------------------+ Branch "release-candidate" (0.0.1-SNAPSHOT) | | (goes to QA for testing) + Trunk (0.0.2-SNAPSHOT) | | (development continues) + Tag "release-0.0.1" (0.0.1) .... (deploy this revision) 

En este punto, necesito actualizar el pom.xml con la nueva versión de desarrollo. El release-candidate conserva la versión de la instantánea hasta que el control de calidad finalice con las testings y declara que la versión está list. Solo entonces la ejecución real + implementación se realizará en la label / twig.

El desarrollo puede continuar en el tronco mientras se testing el candidato de lanzamiento.

¿Se puede realizar este escenario de lanzamiento en 2 pasos con las versiones maven? ¿El plugin de release suficiente para esto o necesito otros?

Maven Release Plugin es un estándar de facto para lanzar proyectos Maven y obliga a un flujo de trabajo concreto para esto. Como veo, tienes suposiciones bastante diferentes, pero si tratas de encajar en la convención de Maven aquí, Maven Release Plugin haría todo el trabajo aquí.

En primer lugar, release:branch objective de la release:branch puede ayudarlo a crear una twig de línea de versión, mientras que la versión de tope en el trunk list para un nuevo desarrollo. Sin embargo, en mi opinión, definitivamente no es una buena idea compartir este nombre de sucursal ( release-candidate aquí) para cada próximo lanzamiento. Más bien, una forma estándar aquí es hacer una especie de twig de lanzamiento por lanzamiento, donde las cosas se pulieron un poco antes de la versión final real. Entonces, el nombre de la twig 0.0.1 por ejemplo, estaría bien. Y, dicho sea de paso, release:branch objective de release:branch actualiza la <scm /> en POM para que apunte a la twig recién creada, por lo que usar una twig compartida es, una vez más, no una buena idea.

Después de pulir su candidato de lanzamiento, puede hacer un lanzamiento real utilizando una versión bastante estándar release:prepare y release:perform llamadas desde una sucursal , como es habitual en Maven. Eso crea tags, implementa cosas, etc.

Y ahora, si realmente desea tener este nombre de bifurcación fijo (debido a las necesidades de los probadores o algo así), siempre puede usar svn:externals thing y actualizaciones de release-candidate alias para apuntar siempre a la twig candidata de la versión actual.