java - proyecto - ¿Qué es exactamente una instantánea de Maven y por qué la necesitamos?




maven snapshot (5)

Así es como se ve una instantánea para un repositorio y, en este caso, no está habilitado, lo que significa que el repositorio al que se hace referencia aquí es estable y no hay necesidad de actualizaciones.

<project>
    ...
    <repositories>
        <repository>
            <id>lds-main</id>
            <name>LDS Main Repo</name>
            <url>http://code.lds.org/nexus/content/groups/main-repo</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

Otro caso sería para:

<snapshots>
        <enabled>true</enabled>
</snapshots>

lo que significa que Maven buscará actualizaciones para este repositorio. También puede especificar un intervalo para las actualizaciones con etiqueta.

Estoy un poco confundido sobre el significado de Maven Snapshot y por qué creamos una?


El término "INSTANTÁNEO" significa que la compilación es una instantánea de su código en un momento dado.

Por lo general, significa que esta versión todavía está en desarrollo.

Cuando el código esté listo y sea el momento de liberarlo, querrá cambiar la versión que aparece en el POM. Luego, en lugar de tener un "SNAPSHOT", usaría una etiqueta como "1.0".

Para obtener ayuda con la creación de versiones, consulte la especificación de Versión semántica .


Las versiones de Maven pueden contener una cadena literal "SNAPSHOT" para indicar que un proyecto se encuentra actualmente en desarrollo activo.

Por ejemplo, si su proyecto tiene una versión de "1.0-SNAPSHOT" y usted implementa los artefactos de este proyecto en un repositorio de Maven, Maven expandiría esta versión a "1.0-20080207-230803-1" si tuviera que implementar una versión a las 11 : 08 PM el 7 de febrero de 2008 UTC. En otras palabras, cuando implementa una instantánea, no está realizando una versión de un componente de software; está liberando una instantánea de un componente en un momento específico.

Por lo tanto, principalmente las versiones de instantáneas se utilizan para proyectos en desarrollo activo. Si su proyecto depende de un componente de software que está en desarrollo activo, puede depender de un lanzamiento de instantáneas, y Maven intentará descargar periódicamente la última instantánea de un repositorio cuando ejecute una compilación. De manera similar, si la próxima versión de su sistema tendrá una versión "1.8", su proyecto tendrá una versión "1.8-SNAPSHOT" hasta que se publique formalmente.

Por ejemplo, la siguiente dependencia siempre descargaría el último JAR de desarrollo 1.8 de spring:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>1.8-SNAPSHOT”</version>
    </dependency>

Maven

Un ejemplo de proceso de liberación de Maven.


Un "lanzamiento" es la compilación final de una versión que no cambia.

Una "instantánea" es una compilación que se puede reemplazar por otra compilación que tiene el mismo nombre. Es implica que la construcción podría cambiar en cualquier momento y todavía está en desarrollo activo.

Tienes diferentes artefactos para diferentes construcciones basadas en el mismo código. Por ejemplo, puede tener uno con depuración y otro sin. Una para Java 5.0 y otra para Java 6. En general, es más simple tener una compilación que hace todo lo que necesita. ;)


normalmente en maven tenemos dos tipos de compilaciones 1) compilaciones instantáneas 2) compilaciones de versión

  1. compilaciones de instantáneas: SNAPSHOT es la versión especial que indica que la copia de implementación actual no es como una versión normal, Maven comprueba la versión de cada compilación en el repositorio remoto, por lo que las compilaciones de instantáneas no son más que compilaciones de mantenimiento.

  2. Compilaciones de lanzamiento: Liberar significa eliminar SNAPSHOT en la versión para la compilación, estas son las versiones de compilación normales.





dependency-management