Tengo un par de proyectos que se desarrollan y se liberan en diferentes ramas, a saber de desarrollo y liberación . El proceso funciona bastante bien, pero desafortunadamente tiene algunos inconvenientes y me he estado preguntando si hay un mejor esquema de control de versiones para aplicar en mi situación.mejores prácticas para Maven de versiones diferentes ramas [Desarrollo, QA/pre-lanzamiento]
El desarrollo principal ocurre en una rama de desarrollo (es decir, Subversion trunk pero no importa mucho) donde el equipo de desarrolladores confirma sus cambios. Después de construir y empacar artefactos, Jenkins los despliega en el repositorio de maven y en el servidor de aplicaciones de integración de desarrollo. Este es un desarrollo de instantáneas y básicamente es sólo un feature branch que contiene todas las características desarrolladas sobre una rama común:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>D.16-SNAPSHOT</version>
Cuando un cambio de negocio en particular está hecho y pidió por el equipo de control de calidad, este único cambio, entonces se fusionó a la lanzamiento de la rama (branches/release). Jenkins despliega el artefacto resultante de servidor de aplicaciones de control de calidad:
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>R.16-SNAPSHOT</version>
Luego hay una liberación que pasa a través de Maven-release-plugin en la versión rama versión del software (que crea un mantenimiento de la etiqueta/rama de corrección de errores rápida). (R.16-SNAPSHOT => R.16)
Las ramas de desarrollo y publicación se están versionando actualmente como D.16-SNAPSHOT y R.16-SNAPSHOT, respectivamente. Esto permite separar artefactos en el repositorio de maven, pero crea un problema con diferentes mecanismos maven que se basan en el estilo de versión Maven estándar. Y esto también rompe el control de versiones de OSGI.
Ahora, ¿cómo nombrarías y harías los artefactos de maven en tal esquema? ¿Hay una mejor manera? ¿Tal vez podría hacer algunos cambios en las estructuras maven además de simplemente cambiar los esquemas de control de versiones y nombres? Pero necesito mantener las ramas SCM de desarrollo y control de calidad (versión) separadas.
¿Sería un clasificador maven de 'desarrollo'/'producción' una alternativa razonable?
<groupId>pl.cyfrowypolsat.process-engine</groupId>
<artifactId>process-engine</artifactId>
<version>16-SNAPSHOT</version>
<classifier>D</classifier>
Mira en http://stackoverflow.com/q/11413624/7581. Parece que la mejor manera sería tener versiones como '16-R-SNAPSHOT' y' 16-D-SNAPSHOT'. No use el clasificador. – itsadok