2009-06-19 8 views
4

Ich habe vor Kurzem Maven-Snapshot-Build-Funktionen zu einem Projekt hinzugefügt, das für die Verwendung einer eindeutigen Timestamp-Version für das implementierte Artefakt konfiguriert wurde. Es besteht jedoch eine gewisse Verwirrung darüber, ob dies richtig ist (fragliche Snapshots werden in einem öffentlichen Repository bereitgestellt, nicht nur in einer Entität wie einem Unternehmen): Einige sagen, dass es Probleme verursacht, wenn Snapshots verwendet werden sollen.Maven Best Practices: einschließlich Zeitstempel für Snapshot-Versionen oder nicht?

Also: Angesichts der Tatsache, wie viel von Maven Convention-basiert ist, und nach den besten Praktiken, ich hoffe, es gibt einige Richtlinien, welche Option zu wählen.

(HINWEIS: Ich habe den Titel leicht bearbeitet - ich bin speziell interessant in Vorteile (oder Fehlen davon) von einzigartigen Zeitstempel, über die Bereitstellung Option, für öffentliche Snapshot-Versionen, nicht so sehr, ob Zeitstempel verwenden, wenn sie sind enthalten, obwohl das natürlich etwas verwandten Frage ist)

Antwort

0

Der ganze Sinn eines Schnappschusses ist es, jemanden die neueste Version des Codes verwenden zu lassen. Warum möchtest du einen Schnappschuss fünf Versionen zurück verwenden?

In Anbetracht dessen, was kaufen Sie Zeitstempel im Artefaktnamen?

Ich benutze Maven seit etwa 5 Jahren. Ich habe noch nie ein Schnappschussglas mit einem Zeitstempel im Namen gesehen.

+0

Danke! Ich weiß nicht, ursprünglichen Absichten dieser Option, aber meine Vermutung war Timestamp könnte eine von 2 Absichten: * Erlaube reproduzierbare Builds (spezifische Momentaufnahme) * Stellen Sie sicher, dass die neueste Version verwendet wird, unabhängig von Caching oder Details der Inter-Repo-Synchronisation (da sich der Snapshot-Artefaktname ändert, wird er (r) synchronisiert; ohne ihn scheint es einige Probleme zu geben) Aber der Grund, warum ich gefragt habe, war: Ich weiß nicht, ob diese als gültig betrachtet werden. :-) Ich habe gerade die Option gesehen und habe einige Projekte gesehen (wie Enunciate) Timestamps für ihre Snapshots verwenden. – StaxMan

+0

Vielleicht möchten Sie einen Snapshot fünf Versionen zurück verwenden, denn das ist, was Sie getestet haben. Manchmal benötigen Sie etwas, das neuer ist als das letzte Release (z. B. aufgrund eines neuen Features), aber das nächste Release ist nicht rechtzeitig fällig. Sie wählen also einen Schnappschuss und testen ihn. – derobert

1

In der Regel sollten Sie immer gegen die -SNAPSHOT-Abhängigkeit bauen. Sie sollten jedoch die Freigabe Ihres Produkts vermeiden, wenn es -SNAPSHOT-Abhängigkeiten enthält. Wenn Sie die Version Maven Release Plug-in verwenden, um Ihre Version zu automatisieren, wird überprüft, ob Sie keine Release-Plugins oder Abhängigkeiten verwenden.

Aber das ist nicht immer möglich. In Fällen, in denen ich etwas basierend auf einem Snapshot-Build freigeben muss, verwende ich die explizite Timestamp/Build-Nummer und nicht das -SNAPSHOT-Versionsbenennungsschema.

Sie können dies mit der Versions Maven Plugin automatisieren. Es bietet Ziele zum Sperren und Freigeben von Snapshot-Versionen in Ihrem POM.

+0

Danke. In meinem Fall veröffentliche ich Momentaufnahmen, nicht so sehr, um sie zu benutzen (zumindest für die Zwecke dieser Frage). Aber es hilft: Ohne Zeitstempel im Repo können Sie keine Abhängigkeiten deklarieren, die sie verwenden würden. Das wäre also ein Grund für die Aufnahme von Zeitstempeln. – StaxMan