proyecto desde create crear consola commands comandos java maven dependency-management

java - desde - maven commands



¿Qué es exactamente una instantánea de Maven y por qué la necesitamos? (7)

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 otras tres respuestas le proporcionan una buena visión de lo que es una versión de -SNAPSHOT . Solo quería agregar información sobre el comportamiento de Maven cuando encuentre una dependencia SNAPSHOT .

Cuando creas una aplicación, Maven buscará dependencias en el repositorio local . Si no se encuentra una versión estable allí, buscará los repositorios remotos (definidos en settings.xml o pom.xml ) para recuperar esta dependencia. Luego, lo copiará en el repositorio local, para que esté disponible para las siguientes compilaciones.

Por ejemplo, una biblioteca foo-1.0.jar se considera una versión estable , y si Maven la encuentra en el repositorio local, usará esta para la compilación actual.

Ahora, si necesita una biblioteca foo-1.0-SNAPSHOT.jar , Maven sabrá que esta versión no es estable y está sujeta a cambios. Es por eso que Maven intentará encontrar una versión más nueva en los repositorios remotos, incluso si una versión de esta biblioteca se encuentra en el repositorio local. Sin embargo, esta comprobación se realiza una sola vez al día. Eso significa que si tiene un foo-1.0-20110506.110000-1.jar (es decir, esta biblioteca se generó el 2011/05/06 a las 11:00:00) en su repositorio local, y si ejecuta la compilación Maven nuevamente, El mismo día, Maven no revisará los repositorios para una versión más nueva.

Maven le proporciona una manera de cambiar esta política de actualización en la definición de su repositorio:

<repository> <id>foo-repository</id> <url>...</url> <snapshots> <enabled>true</enabled> <updatePolicy>XXX</updatePolicy> </snapshots> </repository>

donde XXX puede ser:

  • siempre : Maven buscará una versión más nueva en cada compilación;
  • diariamente , el valor por defecto;
  • intervalo: XXX : un intervalo en minutos (XXX)
  • nunca : Maven nunca intentará recuperar otra versión. Lo hará solo si no existe localmente. Con la configuración, la versión SNAPSHOT se manejará como las bibliotecas estables.

(El modelo de la configuración.xml se puede encontrar here)


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. ;)


Una versión instantánea en Maven es una que no ha sido lanzada.

La idea es que antes de que se realice una versión 1.0 (o cualquier otra versión), existe una versión 1.0-SNAPSHOT . Esa versión es la que podría llegar a ser 1.0 . Es básicamente " 1.0 en desarrollo". Esto podría estar cerca de una versión real 1.0 , o bastante lejos (justo después de la versión 0.9 , por ejemplo).

La diferencia entre una versión "real" y una versión de instantánea es que las instantáneas pueden recibir actualizaciones. Eso significa que descargar 1.0-SNAPSHOT hoy puede dar un archivo diferente al de descargarlo ayer o mañana.

Por lo general, las dependencias de instantáneas solo deben existir durante el desarrollo y ninguna versión lanzada (es decir, sin instantáneas) debe tener una dependencia de una versión de instantáneas.


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.