Hier ist das Szenario:Maven SCHNAPPSCHUSS jar Dateinamen nicht konsistent in MANIFEST Datei Maven Assembly mit
Zwei Maven 3 Projekt baut.
Build 1 verfügt über Snapshot-Jars, die für Nexus bereitgestellt werden.
Build-2 hat Abhängigkeiten von den Snapshots, verwiesen wie 1.0.0-SNAPSHOT, die nach oben und gezippt mit dem mvn clean package assembly:single
Befehl verpackt werden.
Das Problem, das wir laufen in: Gelegentlich, wenn die Baugruppe erstellt wird, wird die Datei MANIFEST für das Glas sagen manchmal some.jar.1.0.0-snapshot und manchmal wird es some.jar sagen. 1.0.0-Datum-Zeit-Stempel, wodurch Klassen nicht definierte Fehler verursacht.
Gibt es eine Möglichkeit, dieses Benennungsproblem in der Manifestdatei zu verhindern?
--edit--
Weitere Forschung folgend entdeckt:
„Wenn die Momentaufnahme aus einem Repo aufgelöst wurde, dann wird es timestamped werden, wenn es darum geht, aus dem Reaktor oder lokalen Repo, dann wird es -snapshot sein. das Plugin ruft in die maven Auflösungslogik so ist dieser Kern maven Verhalten. "
Dies ist das genaue i ssue, in das hineingelaufen wird. Die zweite Build-Manifestdatei hat immer einen Eintrag von ./lib/Framework-1.0.0-SNAPSHOT.jar, wobei sich der tatsächliche JAR-Dateiname zwischen ./lib/Framework-1.0.0-SNAPSHOT.jar und ./lib/Framework-1.0.0-timestamp.jar basierend auf dem obigen Zitat.
[This] (http://stackoverflow.com/questions/2516860/maven-how-to-create-assembly-with-snapshot-artifacts-without-timestamps-file-na) könnte helfen, es beschreibt die Einstellung von outputfilenamemapping Dateinamen in Snapshots konsistent zu machen. – prunge
Wie wird das Manifest des SNAPSHOT generiert und wie wird es konfiguriert, um diese Informationen zu erzeugen? Außerdem ist mvn clean package assembly: single called und nicht einfach mvn clean package cause wird das konfigurierte assembly-plugin aufrufen. – khmarbaise
Es gibt kein Manifest für den SNAPSHOT selbst. Das Manifest mit dem Problem ist im 2. Build. Und mit etwas Hilfe von einem Kollegen fanden wir diese 'Wenn der Snapshot von einem Repo gelöst wurde, dann wird es Zeitstempel sein, wenn es aus dem Reaktor oder lokalen Repo kam, dann wird es -SNAPSHOT. Das Plugin ruft die Maven-Auflösungslogik auf, so dass dies das Core-Maven-Verhalten ist. Dies ist das genaue Problem, das ich habe, ich muss mich nur darum kümmern. Warum Paket Assembly: Single aufgerufen wird, gut, weil wir neu zu Maven als Ganzes sind. – Thaldin