Repositorio de instantáneas de Maven frente al repositorio de versiones

103

¿Cuál es la diferencia entre un repositorio de instantáneas y un repositorio de versiones ?

Esto se refiere a la configuración de repositorios (como Artifactory, Nexus, etc.)

Joseph
fuente
¿A qué se refiere esto? ¿Fuente de control? No es una terminología estándar que yo sepa, pero supongo que una instantánea se usó como una imagen de un árbol de fuentes en un momento determinado (probablemente para uso interno), mientras que se usa una versión para el código que se publica externamente.
1800 INFORMACIÓN
Parece que estás preguntando por Maven (la herramienta de construcción). Tal vez debería incluir eso en la pregunta y las etiquetas.
bendin

Respuestas:

67

Liberar artefactos

Estos son lanzamientos específicos en un momento determinado. Los artefactos liberados se consideran sólidos, estables y perpetuos para garantizar que las construcciones que dependen de ellos sean repetibles en el tiempo. Los artefactos JAR publicados están asociados con firmas PGP y las sumas de comprobación verifican tanto la autenticidad como la integridad del artefacto de software binario. Las tiendas del repositorio de Central Maven liberan artefactos.

Artefactos de instantáneas

Las instantáneas capturan un trabajo en progreso y se utilizan durante el desarrollo. Un artefacto de instantánea tiene un número de versión como "1.3.0" o "1.3" y una marca de tiempo. Por ejemplo, un artefacto de instantánea para commons-lang 1.3.0 podría tener el nombre commons-lang-1.3.0-20090314.182342-1.jar.

Tomado de refcard

Sayat Satybald
fuente
Sayat, ¿es 1.1.0.M5 o 1.1.0.M4 una versión de la instantánea?
Alexander Suraphel
4
Esto define qué son los artefactos de lanzamiento y de instantánea. Pero: ¿se necesitan dos repositorios distintos?
adn
1
Encontré información bien escrita en docs.oracle.com/middleware/1212/core/MAVEN/…
Yoav Epstein
1
Esto no responde a la pregunta, la pregunta es sobre la distinción entre repositorios de instantáneas y de lanzamiento (no artefactos).
mks-d
1
@ mks-d Buena observación, pero es difícil entender un repositorio de algo sin entender primero qué es ese "algo". :) stackoverflow.com/a/5901460
datv
86

Los repositorios de versiones contienen versiones y los repositorios de instantáneas contienen instantáneas. En maven, una instantánea se define como un artefacto con una versión que termina en -SNAPSHOT. Cuando se implementa, la instantánea se convierte en una marca de tiempo. Por definición, las instantáneas son mutables, los lanzamientos son inmutables. Es por eso que Nexus te obliga a almacenarlos por separado porque, por lo general, no te importa si pierdes instantáneas, pero te importa si pierdes lanzamientos. Hace que la limpieza de instantáneas sea mucho más fácil de manejar de esa manera.

Brian Fox
fuente
12
Gracias por el "Cuando se implementa, el SNAPSHOT se convierte en una marca de tiempo" .
DATV
cuando configuré el trabajo en jenkins y utilicé cargar artefactos al repositorio de instantáneas de nexus, no pude ver más de una instantánea. Generalmente, cuando hacemos cambios en el proyecto y activamos una construcción, se crearía un nuevo artefacto. Aunque esto está sucediendo, pero lo está renombrando al mismo 1.0-SNAPSHOT en lugar de hacerlo como 2.0-SNAPSHOT y así sucesivamente .. Cualquier ayuda .. @Brian Fox
frp farhan
Lo usé en la sección de compilación posterior de jenkins, implementé artefactos en el repositorio de maven y lo configuré como un repositorio de instantáneas de nexus.
frp farhan
3

Las instantáneas son una idea de maven para dar el número de versión como -SNAPSHOTS, está en desarrollo, puede cambiar en cualquier momento.

El repositorio interno es el repositorio de versiones con un número de versión fijo. Puede modificar los SNAPSHOTS, pero ese artefacto nunca cambia después de su lanzamiento.

AKT
fuente
Porque "está en desarrollo, puede cambiar en cualquier momento" (para -SNAPSHOT)
datv
3

Por lo general, en maven tenemos dos tipos de compilaciones:

1) Compilaciones de instantáneas : SNAPSHOT es la versión especial que indica la copia de implementación actual y no una versión específica normal. Maven verifica la versión de cada compilación en el repositorio remoto. Las compilaciones de instantáneas no son más que compilaciones de desarrollo.

2) Versión de compilaciones : Liberar significa eliminar SNAPSHOT en el ID de versión de la compilación. Estas son las versiones de compilación habituales.

Los artefactos de instantáneas y los artefactos de liberación se envían a instantáneas, repositorios de liberación, respectivamente.

Venky Vungarala
fuente
0

SNAPSHOT aquí no significa realmente UNA instantánea que está congelada y no cambiará, SNAPSHOT cubre varias instantáneas cuyas modificaciones no son lo suficientemente grandes como para ser representadas por un nuevo número de versión

Su mejor apuesta
fuente