Ein paar verschiedene Optionen ...
P2-Plugin
Verwenden p2-maven-plugin alle Nicht-OSGi Abhängigkeiten in Bündel wickeln und eine p2-Repository erstellen.
Ich habe nicht versucht, p2-maven-plugin (es war nicht vorhanden, als ich mein aktuelles Projekt eingerichtet habe). Seine Implementierung basiert auf Tycho, aber Sie finden es möglicherweise eine bequemere Möglichkeit, Ihr Problem als nur die Tycho-Plugins zu lösen.
Bundle Plugin
Verwenden maven-bundle-plugin-Wrap Ihre Nicht-OSGi Abhängigkeiten (ein Wrapper pom pro Abhängigkeit), und in Ihrem Repository installieren. Ich denke, Commons-Mathe ist bereits eine Abhängigkeit, also müssen Sie vielleicht nur Vecmath einpacken. Sie könnten dann diese Abhängigkeiten in der <dependencies>
Ihrer Tycho-basierten Pom-Dateien auflisten.
Dieser Ansatz hat den Vorteil, dass Sie kein p2-Repository nur zum Erstellen Ihres Projekts einrichten müssen. Der Nachteil ist, dass das Verwalten von Abhängigkeiten in Ihren Bundle-Projekten nicht länger nur dazu dient, die Datei MANIFEST.MF zu modifizieren: Sie müssen möglicherweise auch den Pom aktualisieren.
Bundle Plugin und Tycho
Wenn Sie den Bundle Plugin Ansatz verwenden, um Ihre Abhängigkeiten in OSGi-Bundles Verpackung, kann es immer noch nützlich sein ohnehin eine p2-Repository für diese Abhängigkeiten einzurichten, wie dies vereinfacht Einrichten der Zielplattform in Eclipse PDE.
Um dies zu tun, können Sie ein neues Tycho-Projekt erstellen, um die Abhängigkeiten in einem p2-Repository zu sammeln: die Abhängigkeiten, die bereits Bundles sind, zusammen mit den Wrapped-Versionen der Nicht-OSGi-Abhängigkeiten.Auf diese Weise listet das Projekt, das das p2-Repository erstellt, die eingepackten Abhängigkeiten in seinem pom auf, und Ihre Bundle-Projekte können das p2-Repository verwenden, ohne Abhängigkeiten in ihren Poms aufzulisten.
Dies ist der Ansatz, den ich verwende. Insbesondere verwende ich ein eclipse-feature
Projekt, um eine Basis Funktion zu definieren, die alle Abhängigkeiten von Dritt-Anbieter enthält. Ich habe auch die Konfigurationsoption <deployableFeature>
auf dem Verpackungs-Plugin auf true
gesetzt, die ein p2-Repository im Zielverzeichnis erstellen wird. Diese Funktion kann in meine gewohnte Eclipse-Instanz installiert werden, wodurch die aktuelle Eclipse-Plattform als Zielplattform einfach zu verwenden ist. Es kann auch als p2-Repository verwendet werden, das an anderer Stelle im Tycho-Build (d. H. Nach meinem Code) oder als Repository in einer Eclipse .target
-Datei verwendet werden kann.
Die eclipse-feature
schien der beste Verpackungstyp in Tycho 0.13.0 zu sein. In neueren Versionen gibt es möglicherweise einen geeigneteren Verpackungstyp.
Das war der einfachste und schnellste Weg, um ein P2-Repo zu erstellen. Danke an alle. – Timo
Ich stimme nicht zu. Sie müssen die Seite manuell erstellen und wenn die Gläser keine Bündel sind, müssen Sie sie selbst "bündeln". All das ist banal, umständlich und könnte mit dem unten erwähnten p2-maven-plugin einfach automatisiert werden. Ich bin der Autor von p2-maven-plugin und habe es nur verschlüsselt, weil ich es sehr umständlich fand, die "Features and Bundles Publisher Application" zu verwenden. Probieren Sie p2-maven-plugin und Sie werden sehen, es ist viel einfacher als alles andere: https://github.com/reficio/p2-maven-plugin –
Ja, ich stimme dem p2-Maven-Plugin sieht wie die beste Lösung . Der Umgang mit Abhängigkeiten von Drittanbietern in Eclipse/RCP-Projekten ist wirklich so schmerzhaft. Sieht so aus als ob p2-maven-plugin diesen Schmerz erheblich reduzieren kann, nur um irgendwo eine Liste zu führen und eine p2 update Seite von CI build zu veröffentlichen, damit wir sie in all unseren Tycho Builds verwenden können. – Kris