Frage

ich mag ein Snapshot-Projekt 'foo-1.0-SNAPSHOT' das Plugin Maven Release mit freizugeben. Das Projekt ist abhängig von einer 3rd-Party-Modul ‚Bar-1.0-SNAPSHOT‘, die noch nicht freigegeben wird. Ich verwende die Option ‚allowTimestampedSnapshots‘ in pom.xml meinem Projekt timestamped Schnappschüsse zu ermöglichen, aber ich nehme an, dass die 3rd-Party-Modul (bar) timestamped nicht, wenn ich es selbst zu bauen, wie Maven klagt noch über ungelöste SCHNAPPSCHUSS Abhängigkeiten.

Gibt es eine Möglichkeit, das Projekt foo unabhängig davon abhängig SCHNAPPSCHUSS Projekte freizugeben, und wenn nicht, wie könnte ich einen Zeitstempel auf das 3rd-Party-Projekt hinzufügen?

War es hilfreich?

Lösung

Die kurze Antwort ist die folgende Antwort .... die lange Antwort ist, können Sie es umgehen.

Die einzige Möglichkeit, die ich in der Vergangenheit bewältigt haben, ist, um effektiv die 3rd-Party-Bibliothek gabeln und Release mich geschnitten. Das ist natürlich leichter gesagt als getan und ist einfach nur schwierig, wenn die Bibliothek ist groß und komplex und unmöglich, wenn die 3rd-Party-Bibliothek geschlossen Quelle ist. Ein einfacher Weg vielleicht die dritte Partei zu nähern und sie bittet, eine Freigabe zu schneiden.

Eine weitere Option sein kann ihre pom zu kopieren (sicherzustellen, dass es keine Snapshots hat), um die Versionsinformationen ändern und manuell die pom und Artefakt in Ihrem Repository installieren.

Andere Tipps

Das Problem ist mit den allowTimestampedSnapshots Parameter Namen, es ist in der Dokumentation, aber die Quelle des Plugin verwendet einen anderen Parameternamen in Ausdruck -. ignoreSnapshots

Also nur -DignoreSnapshots=true verwenden und das Ziel der Release-Plugin wird vorbereitet Snapshot Abhängigkeiten ignorieren.

Mit der Maven-Release-Plugin Option

-DignoreSnapshots=true

statt

-DallowTimestampedSnapshots=true

in meinem Fall geholfen, dies ermöglicht es Abhängigkeiten mit Snapshot-Version zu verwenden, um eine Freigabe vorzubereiten und durchzuführen.

Mit dieser Option sehr vorsichtig behandelt werden soll, weil Snapshot-Versionen in einer Veröffentlichung mit Ihrem Release später brechen kann, wenn die Snapshot Abhängigkeit aktualisiert wird, was im Normalfall ist nicht, was Sie wollen.

Die vorherige Antwort vorgeschlagen, die Gruppe und Artefakt-ID zu ändern ... tut dies nicht als Maven wird es nicht als das gleiche Artefakt später erkennen, wenn diese Abhängigkeit freigegeben wird, und Sie werden mit zwei Kopien auf dem Classpath am Ende . Meine bevorzugte Methode ist nur die Version zu ändern und ich werde wie etwas tun: [OF] - [mein org name] - [SVN-Version i zog es aus], so dass ich so etwas wie 1,0-Sonatype-3425 erhalten. Durch die Verwendung der SVN rev, kann ich immer die Quelle ziehen wieder und es patchen, wenn nötig und genau wissen, was ich verwende, ohne die gesamte Quelle in meine eigene SVN zu ziehen.

Update - I a href <= "http://www.sonatype.com/people/2009/01/best-practices-for-releasing-with-3rd-party-snapshot-dependencies/" rel = "nofollow noreferrer "> gebloggt über diese eine Weile zurück.

Installieren Sie einfach das Glas mit einem pom Sie besitzen. Ich in der Regel die Gruppe und Artefakt-ID ändern, um klarzustellen, dass dies nicht die offizielle Version, aber das ist im Allgemeinen die beste Arbeit um für Ihr Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top