Maven Snapshot Repository vs Release Repository

104

Quelle est la différence entre un instantané du référentiel et de presse du référentiel?

Ceci concerne la configuration de référentiels (comme Artifactory, Nexus, etc.)

Joseph
la source
De quoi s'agit-il? Contrôle de la source? Ce n'est pas une terminologie standard pour autant que je sache, mais je pourrais supposer qu'un instantané a été utilisé comme image d'un arbre source à un moment donné (probablement pour un usage interne), tandis qu'une version est utilisée pour le code publié en externe.
1800 INFORMATION
On dirait que vous posez des questions sur Maven (l'outil de construction). Vous devriez peut-être inclure cela dans la question et les balises.
bendin

Réponses:

67

Libérer les artefacts

Ce sont des versions spécifiques et ponctuelles. Les artefacts libérés sont considérés comme solides, stables et perpétuels afin de garantir que les constructions qui en dépendent sont répétables dans le temps. Les artefacts JAR libérés sont associés aux signatures PGP et les sommes de contrôle vérifient à la fois l'authenticité et l'intégrité de l'artefact logiciel binaire. Le référentiel Central Maven stocke les artefacts de version.

Artefacts instantanés

Les instantanés capturent un travail en cours et sont utilisés pendant le développement. Un artefact Snapshot possède à la fois un numéro de version tel que «1.3.0» ou «1.3» et un horodatage. Par exemple, un artefact d'instantané pour commons-lang 1.3.0 peut avoir le nom commons-lang-1.3.0-20090314.182342-1.jar.

Tiré de refcard

Sayat Satybald
la source
Sayat, est 1.1.0.M5 ou 1.1.0.M4 une version de l'instantané?
Alexander Suraphel
4
Cela définit ce que sont les artefacts de version et d'instantané. Mais: faut-il deux dépôts distincts?
dna
1
Trouvé des informations bien écrites sur docs.oracle.com/middleware/1212/core/MAVEN/…
Yoav Epstein
1
Cela ne répond pas à la question, la question porte sur la distinction entre les référentiels de publication et de snapshots (pas les artefacts).
mks-d le
1
@ mks-d Bonne observation mais il est difficile de comprendre un référentiel de quelque chose sans comprendre d'abord ce qu'est ce «quelque chose». :) stackoverflow.com/a/5901460
datv
86

Les référentiels de versions contiennent des versions et les référentiels de clichés contiennent des instantanés. Dans maven, un instantané est défini comme un artefact avec une version se terminant par -SNAPSHOT. Une fois déployé, l'instantané est transformé en horodatage. Par définition, les instantanés sont modifiables, les versions sont immuables. C'est pourquoi Nexus vous oblige à les stocker séparément, car généralement vous ne vous souciez pas de savoir si vous perdez des instantanés, mais vous vous en soucierez si vous perdez des versions. Cela rend le nettoyage des instantanés beaucoup plus facile à gérer de cette façon.

Brian Fox
la source
12
Merci pour le "Une fois déployé, le SNAPSHOT est transformé en un horodatage" .
datv
lorsque j'ai configuré le travail sur jenkins et que j'ai utilisé des artefacts de téléchargement dans le repo d'instantanés nexus, je ne pouvais pas voir plus d'un instantané. Généralement, lorsque nous apportons des modifications au projet et déclenchons une construction, un nouvel artefact est créé. Bien que cela se produise mais il le renomme au même 1.0-SNAPSHOT plutôt il devrait le nommer comme 2.0-SNAPSHOT et ainsi de suite. Toute aide .. @Brian Fox
frp farhan
J'avais utilisé dans la section post build de jenkins, déployer des artefacts dans le référentiel maven et l'avoir configuré en tant que dépôt d'instantanés de nexus.
frp farhan
3

Les snapshots sont une idée géniale pour donner le numéro de version comme -SNAPSHOTS, il est en cours de développement, il peut changer à tout moment.

Le référentiel interne est le référentiel de version avec un numéro de version fixe. Vous pouvez modifier les SNAPSHOTS, mais cet artefact ne change jamais après sa publication.

AKT
la source
Pour "il est en cours de développement, il peut changer à tout moment" (pour -SNAPSHOT)
datv
3

Habituellement, dans maven, nous avons deux types de builds:

1) Snapshot builds : SNAPSHOT est la version spéciale qui indique la copie de déploiement actuelle et non une version régulière et spécifique. Maven vérifie la version de chaque build dans le référentiel distant. Les builds de snapshot ne sont rien d'autre que des builds de développement.

2) Release builds : Release signifie supprimer le SNAPSHOT à l'ID de version de la build. Ce sont les versions de construction régulières.

Les artefacts de snapshot et les artefacts de version sont respectivement poussés vers les référentiels de snapshot et de publication.

Venky Vungarala
la source
0

SNAPSHOT ici ne signifie pas vraiment UN instantané qui est figé et ne changera pas, SNAPSHOT couvre plusieurs instantanés dont les modifications ne sont pas assez importantes pour être représentées par un nouveau numéro de version

YourBestBet
la source