Maven Snapshot Repository vs Release Repository


103

Was ist der Unterschied zwischen einem Snapshot- Repository und einem Release- Repository?

Dies bezieht sich auf das Einrichten von Repositorys (wie Artifactory, Nexus usw.)


Worauf bezieht sich das? Quellcodeverwaltung? Soweit ich weiß, ist dies keine Standardterminologie, aber ich könnte vermuten, dass ein Snapshot zu einem bestimmten Zeitpunkt (wahrscheinlich für den internen Gebrauch) als Bild eines Quellbaums verwendet wurde, während für den extern veröffentlichten Code eine Version verwendet wird.
1800 INFORMATION

Klingt so, als würden Sie nach Maven (dem Build-Tool) fragen. Vielleicht sollten Sie das in die Frage und die Tags aufnehmen.
Bendin

Antworten:


67

Artefakte freigeben

Hierbei handelt es sich um spezifische Releases zu bestimmten Zeitpunkten. Freigegebene Artefakte gelten als solide, stabil und dauerhaft, um sicherzustellen, dass von ihnen abhängige Builds im Laufe der Zeit wiederholbar sind. Freigegebene JAR-Artefakte sind mit PGP-Signaturen verknüpft, und Prüfsummen überprüfen sowohl die Authentizität als auch die Integrität des binären Software-Artefakts. Das Central Maven-Repository speichert Release-Artefakte.

Schnappschuss-Artefakte

Schnappschüsse erfassen eine laufende Arbeit und werden während der Entwicklung verwendet. Ein Snapshot-Artefakt hat sowohl eine Versionsnummer wie "1.3.0" oder "1.3" als auch einen Zeitstempel. Ein Snapshot-Artefakt für commons-lang 1.3.0 kann beispielsweise den Namen commons-lang-1.3.0-20090314.182342-1.jar haben.

Entnommen aus der Refcard


Sayat, Is 1.1.0.M5 oder 1.1.0.M4 eine Version des Schnappschusses?
Alexander Suraphel

4
Dies definiert, was Release- und Snapshot-Artefakte sind. Aber: Werden zwei unterschiedliche Repositorys benötigt?
DNA

1
Gut geschriebene Informationen finden Sie unter docs.oracle.com/middleware/1212/core/MAVEN/…
Yoav Epstein

1
Dies beantwortet die Frage nicht, es geht um die Unterscheidung zwischen Release- und Snapshot- Repositorys (keine Artefakte).
mks-d

1
@ mks-d Gute Beobachtung, aber es ist schwer, ein Repository von etwas zu verstehen, ohne vorher zu verstehen, was dieses "Etwas" ist. :) stackoverflow.com/a/5901460
datv

86

Release-Repositorys enthalten Releases und Snapshot-Repositorys enthalten Snapshots. In Maven wird ein Snapshot als Artefakt mit einer Version definiert, die auf -SNAPSHOT endet. Bei der Bereitstellung wird der Snapshot in einen Zeitstempel umgewandelt. Per Definition sind Snapshots veränderlich, Releases unveränderlich. Aus diesem Grund können Sie sie bei Nexus separat speichern, da es Ihnen normalerweise egal ist, ob Sie Snapshots verlieren, aber es ist Ihnen egal, ob Sie Releases verlieren. Dies erleichtert die Bereinigung von Schnappschüssen erheblich.


12
Vielen Dank für das "Bei der Bereitstellung wird der SNAPSHOT in einen Zeitstempel umgewandelt" .
Datum

Als ich den Job auf Jenkins konfigurierte und Upload-Artefakte für das Nexus-Snapshot-Repo verwendete, konnte ich nicht mehr als einen Snapshot sehen. Wenn wir Änderungen am Projekt vornehmen und einen Build auslösen, wird im Allgemeinen ein neues Artefakt erstellt. Dies geschieht zwar, aber es wird in denselben 1.0-SNAPSHOT umbenannt, eher sollte es als 2.0-SNAPSHOT usw. bezeichnet werden. Jede Hilfe. @Brian Fox
frp farhan

Ich hatte im Post-Build-Bereich von Jenkins verwendet, Artefakte für das Maven-Repository bereitgestellt und es als Snapshot-Repo von Nexus konfiguriert.
frp farhan

3

Schnappschüsse sind eine gute Idee, die Versionsnummer als -SNAPSHOTS anzugeben. Sie befindet sich in der Entwicklung und kann jederzeit geändert werden.

Internes Repository ist das Release-Repository mit fester Versionsnummer. Sie können die SNAPSHOTS ändern, aber dieses Artefakt ändert sich nach seiner Veröffentlichung nie mehr.


Für " es ist in der Entwicklung, es kann sich jederzeit ändern " (für -SNAPSHOT)
Datum

3

Normalerweise haben wir in Maven zwei Arten von Builds:

1) Snapshot-Builds : SNAPSHOT ist die spezielle Version, die die aktuelle Bereitstellungskopie angibt, und keine reguläre, spezifische Version. Maven überprüft die Version für jeden Build im Remote-Repository. Die Snapshot-Builds sind nichts anderes als Entwicklungs-Builds.

2) Builds freigeben: Release bedeutet, dass der SNAPSHOT an der Versions-ID für den Build entfernt wird. Dies sind die regulären Build-Versionen.

Snapshot-Artefakte und Release-Artefakte werden auf Snapshot- bzw. Release-Repositorys übertragen.


0

SNAPSHOT bedeutet hier nicht wirklich EINEN Snapshot, der eingefroren ist und sich nicht ändert. SNAPSHOT deckt mehrere Snapshots ab, deren Änderungen nicht groß genug sind, um durch eine neue Versionsnummer dargestellt zu werden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.