2016-04-10 5 views
1

Env: Maven 3.3.9Maven - So installieren/Deploy timestamped SNAPSHOTS

Hallo,

Ich habe eine Maven-Jar-Modul mit Version als 1.0-SNAPSHOT. Wenn ich mvn install mache, hat das im lokalen Repository (~/.m2/repository) installierte Jar keinen Zeitstempel. Ich stimme zu, dass es kein gewöhnliches Szenario ist, in dem Sie in Ihrem ~/.m2/repository Repo Zeitstempel haben möchten. Aber immer noch ein paar Fragen:

  1. Ersetzt mvn install Zeitstempel automatisch? Auf der Suche nach etwas Konfiguration Weg statt ${timestamp} im endgültigen Namen zu verwenden.
  2. Gilt der automatische Zeitstempelmechanismus für mvn deploy?
  3. Gibt es eine Möglichkeit, Maven zu sagen, ~/.m2/repository selbst für mvn deploy zu verwenden?

Danke,

Rakesh

Antwort

1

Die mvn install wird nur Ihr Projekt in Ihrem lokalen Cache gesetzt, was bedeutet es für andere Projekte auf Ihrem Rechner es zur Verfügung stellt.

mvn deploy werden die Artefakte in Ihrem Remote-Repository bereitstellen, das normalerweise ein Unternehmens-Repository-Manager ist.

Im Falle eines SNAPSHOT bedeutet dies, dass dieses Artefakt noch nicht finalisiert wurde und unter Entwickler steht. Das bedeutet, dass Sie mehrere Zustände derselben Version wie 1.0.0-SNAPSHOT erstellen können. Der Zeitstempel, der während der Bereitstellung an einen Repository-Manager erstellt wird, soll verschiedene Artefakte für die Entwicklung verfügbar machen. Sie können über -U Option steuern, wenn Sie die neueste Version der SNAPSHOT verwenden möchten.

Nachdem Sie sich bereit fühlen, machen Sie eine so genannte Version, die die Version auf etwas wie 1.0.0 (ohne SNAPSHOT) setzt, die ebenfalls implementiert wird, aber in ein Release-Repository, das unveränderlich ist.

Außerdem Zeitstempel in Ihrem lokalen Cache mit $HOME/.m2/repository nicht wirklich Sinn machen, weil Sie steuern können, wenn Sie ein Artefakt dort installieren und sonst niemand, und Sie sollten mit finalName ändern Ursache verhindern dies nur für Ihren target Ordner gedacht ist und nicht für Ihren lokalen Cache. Und schließlich macht die Verwendung des lokalen Cache für mvn deploy keinen Sinn, was ist die Idee dahinter? Am besten ist es, einen Repository-Manager wie Nexus, Artifactory oder Archiva zu verwenden, insbesondere wenn Sie in einer Unternehmensumgebung arbeiten.

0

Neben @ khmarbaise Antwort finden Sie in den folgenden Quellen:

  • Maven/Introduction to Repositories:

    Es gibt eigentlich nur zwei Arten von Repositories: lokal und remote. Das lokale Repository bezieht sich auf eine Kopie in Ihrer eigenen Installation, bei der es sich um einen Cache der Remote-Downloads handelt, und enthält auch die temporären Build-Artefakte, die Sie noch nicht veröffentlicht haben.

    Remote-Repositories beziehen sich auf jede andere Art von Repository, [...]

  • Maven: The Complete Reference, 15.2.8. Repositories:

    Repositorys sind Remote-Sammlungen von Projekten, von denen nutzt Maven das lokale Repository von aufzufüllen das Build-System.

  • Repository - SNAPSHOT Handling liest:

    Diese Dokumentation bei Maven 2.0 alpha abgezielt wurde 1. Es ist hier nur für historische Referenz und aktualisiert und in die Maven Dokumentation integriert werden.

    Aber ich habe keine neueste Dokumentation gefunden, wo dies integriert wurde. (@khmarbaise?)

    Zeitstempeldateien werden bei der Installation im lokalen Repository aus Gründen der Speicherplatzkonservierung nicht erstellt. Wenn jedoch ein SNAPSHOT aufgelöst und heruntergeladen wird, wird er mit seiner Versionsnummer des Zeitstempels gespeichert (zB: 0.15-20050401.150432-2).

  • Understanding Maven Version Numbers

  • Maven Dependency Resolution - A Repository Perspective

Lange Rede kurzer Sinn:

Die gleiche Snapshot-Version kann auf eine Remote-Repository von verschiedenen Hosts eingesetzt werden, so müssen sie dort irgendwie unterschieden werden. Und sie unterscheiden sich durch Zeitstempel (und eine Build-Nummer).

Es wird nur dann ein Artefakt mit einem Zeitstempel (und einer Build-Nummer) im lokalen Repository geben, wenn Maven es aufgelöst hat und es daher von Remote heruntergeladen hat. So

:

  1. Nr
  2. Ja.
  3. Würde brechen Maven die Repositories Handhabung von lokalen vs remote.
+0

@khmarbaise Sind Sie sich bewusst, wo [Repository - SNAPSHOT Handhabung] (https://cwiki.apache.org/confluence/display/MAVENOLD/Repository+-+SNAPSHOT+Handling) integriert ist, oder können Sie es tun? –

Verwandte Themen