Les trois autres réponses vous donnent une bonne vision de ce qu'est une version -SNAPSHOT
. Je voulais juste ajouter quelques informations concernant le comportement de Maven lorsqu'il trouve une dépendance SNAPSHOT
.
Lorsque vous construisez une application, Maven recherchera les dépendances dans le dépôt local. Si une version stable n'est pas trouvée là-bas, il recherchera les dépôts distants (définis dans settings.xml
ou pom.xml
) pour récupérer cette dépendance. Ensuite, il la copiera dans le dépôt local, pour la rendre disponible pour les prochains builds.
Par exemple, une bibliothèque foo-1.0.jar
est considérée comme une version stable, et si Maven la trouve dans le dépôt local, il l'utilisera pour la construction en cours.
Maintenant, si vous avez besoin d'une bibliothèque foo-1.0-SNAPSHOT.jar
, Maven saura que cette version n'est pas stable et est sujette à des changements. C'est pourquoi Maven essaiera de trouver une version plus récente dans les dépôts distants, même si une version de cette bibliothèque est trouvée dans le dépôt local. Cependant, cette vérification n'est faite qu'une fois par jour. Cela signifie que si vous avez un foo-1.0-20110506.110000-1.jar
(c'est-à-dire que cette bibliothèque a été générée le 6 mai 2011 à 11h00) dans votre dépôt local, et si vous lancez à nouveau la construction Maven le même jour, Maven ne vérifiera pas les dépôts pour une version plus récente.
Maven vous propose un moyen de changer cette politique de mise à jour dans la définition de votre dépôt :
foo-repository
...
true
XXX
où XXX
peut être :
- toujours : Maven vérifiera une nouvelle version à chaque construction ;
- quotidiennement, la valeur par défaut ;
- interval:XXX : un intervalle en minutes (XXX) ;
- jamais : Maven ne tentera jamais de récupérer une autre version. Il le fera seulement s'il n'existe pas localement. Avec cette configuration, les versions
SNAPSHOT
seront traitées comme les bibliothèques stables.
(le modèle de settings.xml peut être trouvé ici)