2011-03-18 20 views
5

Actualmente estoy trabajando en Maven tools for Project Dash. Uno de los problemas abiertos es cómo manejar los errores.versión de artefacto de Maven para parches

Maven central dice: Nada publicado cambia alguna vez. Esto se debe a que Maven nunca intenta averiguar si un lanzamiento ha cambiado (a diferencia de SNAPSHOT).

Pero podría tener que crear una nueva "versión" de, por ejemplo, parte de Eclipse 3.6.2. ¿Qué número de versión debo usar? 3.6.2.1, 3.6.2-1, 3.6.2_1, 3.6.2pl1? ¿Por qué?

Respuesta

9

La convención para los números de versión es major.minor.build.

major se incrementa cuando la interfaz pública cambia de manera incompatible. Por ejemplo, se elimina un método o su firma cambia. Los clientes que usan su biblioteca deben tener cuidado al usar una biblioteca con una versión principal diferente, porque las cosas pueden romperse.

minor se incrementa cuando la interfaz pública cambia de una manera compatible. Por ejemplo, se agrega un método. Los clientes no necesitan preocuparse por el uso de la nueva versión, ya que todas las funciones a las que están acostumbrados a ver seguirán allí y actuarán de la misma manera.

build se incrementa cuando la implementación de una función cambia, pero no se agregan ni eliminan firmas. Por ejemplo, encontraste un error y lo solucionaste. Los clientes probablemente deberían actualizar a la nueva versión, pero si no funciona porque dependían del comportamiento defectuoso, pueden degradarse fácilmente.

El problema aquí es que parece que está modificando el código escrito y publicado por otra persona. La convención aquí, como lo he visto, es fijar el número de versión con -yourname-version o solo - version. Por ejemplo, linux-image-2.6.28-27 es un nombre probable de una imagen del kernel de Ubuntu.

Como Maven usa guiones para diferenciar entre las coordenadas de los artefactos, sin embargo, recomendaría (muy largo al parecer, simplemente) agregar .version para no confundirlo. Entonces 3.6.2.1 en este caso.

+1

Buena respuesta. También recomendaría leer sobre versiones semánticas: http://semver.org/ – Nicholas

0

Las versiones de proyecto de Maven se especifican como this.

<major version>.<minor version>.<incremental version>-<qualifier> 

Como usted no desea cambiar el número de versión que busca un calificador. No sé si hay una recomendación general para el nombre del calificador. La gente de Spring, p. hizo algo así como this

2.5.6.SEC01 
2.5.6.SR02 
3.0.0.M3 

no utilizaron el guión/guión notación para separar el calificador.

¡Lo que sea que haga, debe tener cuidado con el orden de las versiones! Eche un vistazo al primer enlace que agregué.

Actualización: También eche un vistazo a @krzyk comentario para cambios/adiciones recientes.

+1

En este momento de acuerdo con http://www.mojohaus.org/versions-maven-plugin/version-rules.html las reglas son '. . - ' –

+0

@krzyk Gracias por mencionar el cambio. Dejaré mis respuestas como están y agregaré un no a tu comentario. – FrVaBe

0

Esto se debe a Maven nunca trata de averiguar si tiene una versión cambió

Eso es en mi opinión no es la razón básica. La razón es tener versiones confiables en el futuro. Usted define las versiones en su pom y eso es todo. Si alguien eliminara artefactos de maven central o empeorara el cambio de un artefacto existente, no puede estar seguro de que su construcción funcionará en el futuro ... o una versión anterior funcionaría.

El número de versión depende de usted ... le sugiero usar 3.6.2.1.

Cuestiones relacionadas