2009-10-06 11 views
6

Estoy convirtiendo un proyecto de hormiga en uno de maven. Este proyecto difiere de los que usualmente he convertido ya que tiene lanzamientos muy frecuentes, típicamente 8-10 veces por día.Versiones para un proyecto maven con versiones pequeñas y muy frecuentes

Por versión quiero decir que el contenedor resultante está empaquetado e incluido en el entorno de producción. Este proyecto es hoja, por lo que no publica API, solo lo consume. También es como máximo una dependencia en tiempo de ejecución para otros dos proyectos.

Me gustaría tener un esquema de versiones donde:

  • que es fácil de implementar sin forzar a los desarrolladores a pensar en lo que el número de versión para asignar al proyecto, ya que el número no tiene sentido;
  • Es fácil incluir la última versión de este proyecto como una dependencia sin aumentar constantemente las versiones de dependencia;

Lo más probable es la versión dependencia no habría una -SNAPSHOT, ya que ello podría obstaculizar la maven-release-plugin que estamos usando para otros proyectos, pero estoy abierto a sugerencias.

Respuesta

5

En realidad, puede usar la versión x-SNAPSHOT y seguir usando el maven-release-plugin. Simplemente use mvn release:prepare antes de mvn release:perform para preparar su versión y cambie la versión en los poms de x-SNAPSHOT a una nueva versión (se le solicitarán las versiones para usar). Puede consultar este introduction en maven-release-plugin para obtener una descripción general rápida de release:prepare y release:perform.

Entonces, para incluir la última versión sin actualizar constantemente versión dependencias, se puede usar rangos de dependencia como en el siguiente fragmento en el que especificar un rango Junit 3,8 - Junit 4.0:

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>[3.8,4.0)</version> 
    <scope>test</scope> 
</dependency> 

Una versión antes o después de la coma no es obligatoria, y significa +/- infinito. Por ejemplo, [4.0,) significa cualquier versión mayor o igual a 4.0.

Personalmente, no me gusta usar tanto los rangos de dependencia porque creo que puede generar problemas de reproducibilidad y hace que la compilación sea más frágil.

Pero puede tener buenas razones para usarlas.

+0

Gracias por la respuesta. Podría terminar haciendo exactamente esto, pero todavía tengo el problema de que las versiones y lanzamientos son irrelevantes para este proyecto, está en un estado de flujo continuo. –

+0

Que yo sepa, tiene 2 opciones aquí: 1. usar una versión de instantánea (bueno para flujo continuo) y olvidar el complemento de lanzamiento, pero no lo haría con el código de producción 2. usando el complemento de lanzamiento y las versiones en aumento (o maven) no elegirá actualizaciones). No sé si hay una solución que se encuentre en el medio. –

+0

+1 para los rangos de versión y el complemento de publicación, consulte esta respuesta para obtener más opciones: http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version- of-a-dependency/1172371 # 1172371 –

Cuestiones relacionadas