Was genau ist ein Maven Snapshot und warum brauchen wir ihn?
Ich bin ein bisschen verwirrt über die Bedeutung eines Maven Snapshot und warum bauen wir?
InformationsquelleAutor der Frage meisam | 2011-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer snapshot-version in Maven ist einer, der noch nicht veröffentlicht wurde.
Die Idee ist, dass vor eine
1.0
release (oder jede andere Version) durchgeführt wird, gibt es eine1.0-SNAPSHOT
. Diese version ist, was werden könnte1.0
. Es ist im Grunde "1.0
unter Entwicklung". Dies könnte schließen zu einem echten1.0
release, oder ziemlich weit entfernt (gleich nach der0.9
release, zum Beispiel).Den Unterschied zwischen einem "echten" version und eine snapshot-version ist, dass snapshots erhalten möglicherweise updates. Das bedeutet, dass das herunterladen
1.0-SNAPSHOT
heute vielleicht eine andere Datei als Download gestern oder morgen.In der Regel, snapshot-Abhängigkeiten sollten nur existieren während der Entwicklung und keine freigegebene version (d.h. keine nicht-snapshot) sollte eine Abhängigkeit auf eine snapshot-version.
InformationsquelleAutor der Antwort Joachim Sauer
Die drei anderen Antworten geben Ihnen eine gute Vorstellung davon, was ein
-SNAPSHOT
version ist. Ich wollte nur hinzufügen, einige Informationen über das Verhalten von Maven, wenn es findet eineSNAPSHOT
Abhängigkeit.Wenn Sie eine Anwendung erstellen, Maven wird die Suche nach Abhängigkeiten in der lokalen repository. Wenn eine stabile version ist dort nicht gefunden, sucht es auf der remote-repositories (definiert in
settings.xml
oderpom.xml
), um diese Abhängigkeit. Es werden dann kopieren Sie Sie in das lokale repository, zur Verfügung zu stellen für die nächste baut.Beispielsweise eine
foo-1.0.jar
Bibliothek gilt als eine stabil - version, und wenn Maven findet es in das lokale repository zu verwenden, wird diese für die aktuelle build.Nun, wenn Sie brauchen eine
foo-1.0-SNAPSHOT.jar
library, Maven, wird wissen, dass diese version ist nicht stabil und unterliegt änderungen. Das ist, warum Maven wird versuchen zu finden, eine neuere version in der remote-repositories, auch wenn eine version dieser Bibliothek zu finden ist, auf das lokale repository. Diese Prüfung ist nur einmal pro Tag. Das bedeutet, dass, wenn Sie haben einefoo-1.0-20110506.110000-1.jar
(d.h. diese Bibliothek erzeugt wurde, auf 2011/05/06 11:00:00) in Ihrem lokalen repository, und wenn Sie den Maven-build wieder den gleichen Tag, Maven wird nicht überprüfen Sie die Repositorys für eine neuere version.Maven bietet Ihnen einen Weg, um dies zu ändern update-Politik in Ihrem repository definition:
wo
XXX
werden kann:SNAPSHOT
version behandelt werden, wie die stabilen Bibliotheken.(Modell der settings.xml finden hier)
InformationsquelleAutor der Antwort romaintaz
Den "SNAPSHOT" - Begriff bedeutet, dass der build ist ein snapshot des Codes zu einem bestimmten Zeitpunkt.
Es in der Regel bedeutet, dass die version ist eine version, die immer noch unter starker Entwicklung.
Wenn es Zeit ist, lösen Sie Ihren code, den Sie ändern möchten, die aufgeführten version in der pom. Anstatt also einen "SNAPSHOT" Sie hätte so etwas wie "1.0".
Für etwas Hilfe mit Versionierung, check-out die Semantic Versioning specification.
InformationsquelleAutor der Antwort jjnguy
Einem "release" ist der Letzte build für eine version die sich nicht ändert.
Einen "snapshot" erstellen, die kann ersetzt werden durch ein anderes zu bauen, die den gleichen Namen hat. Es wird impliziert, dass die bauen können sich jederzeit ändern und ist immer noch in aktiver Entwicklung.
Haben Sie verschiedene Artefakte für verschiedene builds basieren auf dem gleichen code. E. g. haben Sie vielleicht ein debugging und eine ohne. Eine für Java-5.0-und eine für Java 6. In der Regel einfacher zu haben, eine zu bauen, die tut alles, was Sie brauchen. 😉
InformationsquelleAutor der Antwort Peter Lawrey
Maven-Versionen enthalten ein string-literal ist "SNAPSHOT", um zu bestätigen, dass ein Projekt ist derzeit unter aktiver Entwicklung.
Zum Beispiel, wenn Ihr Projekt eine version von "1.0-SNAPSHOT" und der Bereitstellung dieses Projekt Artefakte zu einem Maven-repository,
Maven erweitern würde diese version "1.0-20080207-230803-1" wenn Sie
bereitstellen eines release bei 11:08 PM on Februar 7th, 2008 UTC). In anderen Worten, wenn Sie
bereitstellen einer Momentaufnahme, Sie sind nicht eine neue Version einer software-Komponente; Sie sind
loslassen, um einen snapshot einer Komponente zu einem bestimmten Zeitpunkt.
Also vor allem die snapshot-Versionen sind für Projekte in der aktiven Entwicklung.
Wenn Ihr Projekt basiert auf einer software-Komponente, die in der aktiven Entwicklung,
verlassen Sie sich auf ein snapshot-release, und Maven wird in regelmäßigen Abständen versuchen
laden Sie die neueste Momentaufnahme aus einem repository, wenn Sie ein zu bauen. Ebenso, wenn
die nächste Version von Ihrem system ist eine version "1.8", Ihr Projekt wäre
einen "1.8-SNAPSHOT" - version, bis es offiziell veröffentlicht.
Beispielsweise die folgende dependency würde immer die neueste 1.8 Entwicklung der GLAS Feder:
Maven
Beispiel von maven-release-Prozess
InformationsquelleAutor der Antwort Joby Wilson Mathews
Dies ist wie ein Schnappschuss-sieht aus wie für ein repository und in diesem Fall ist nicht aktiviert, was bedeutet, dass das repository bezeichnet im hier ist stabil und es gibt keine Notwendigkeit für updates.
Einem anderen Fall wäre für:
was bedeutet, dass Maven wird nach updates suchen, die für dieses repository. Sie können auch geben Sie ein Intervall für die updates mit tag.
InformationsquelleAutor der Antwort Kati Holasz
in der Regel in maven haben wir zwei Arten von builds
1)Snapshot-builds
2)Release-builds
snapshot-builds:SNAPSHOT ist die spezielle version, die angeben, dass die aktuelle Bereitstellung kopieren Sie nicht wie eine normale version, maven prüft die version für jeden build im remote-repository
also der snapshot-builds sind nichts anderes als Wartung baut.
Release-builds:Release bedeutet das entfernen der SNAPSHOT bei der version für das bauen, dies sind die regulären build-Versionen.
InformationsquelleAutor der Antwort Venky Vungarala