Ich bin auf diese Frage gestoßen, als ich versucht habe, die Struts-Pakete
Es stellt sich heraus, dass die Antwort sehr einfach ist, wenn Sie Maven verwenden, und wenn nicht, können Sie immer noch die Maven-Lösung verwenden, um zu lernen, wie Sie dasselbe Ergebnis mit einem anderen Mechanismus erzeugen können.
Ich fand diesen Ansatz während meines Projekts mehrfach nützlich, daher werde ich hier ein Beispiel veröffentlichen.
Mit Maven ist es sehr einfach, ein OSGi-Paket aus einer beliebigen Bibliothek zu erstellen. Ich denke jedoch, dass das gleiche Ergebnis auch mit anderen Mechanismen erzielt werden kann. Die Maven-Lösung hat mir geholfen zu verstehen, wie es funktioniert.
Das Erstellen des Pakets erfolgt durch Erstellen eines Projekts mit der Bibliothek als Abhängigkeit und anschließendes Packen des Projekts mithilfe des maven-bundle-plugin aus dem Apache Felix Projekt und Angabe die Bibliothekspakete mit der Anweisung Export-Package
. Ich nutzte dies, um Google-Protokollpuffer zwischen Bündeln in einem OSGi-Container zu teilen:
Wenn Sie möchten, dass auch alle transitiven Abhängigkeiten in das Bundle gerollt werden, verwenden Sie das bundleall
-Ziel des Plugins.
Das Plugin erkennt und berücksichtigt vorhandene OSGi-Manifeste in der Abhängigkeit.
Sie können das Bundle-Plugin auch verwenden, um nur das Manifest zu erstellen und dem jar
packing-Plugin (oder der jar-with-dependencies
eingebauten Assembly) mitzuteilen, dieses Manifest über den Archivbereich zu verwenden. Die oben verlinkte Seite des Plugins zeigt, wie das geht.
Ein zusätzlicher Weg für diejenigen, die nicht so scharf auf Maven sind, nicht in der Lage sind zu portieren, oder vollkommen glücklich mit Ameisen / Efeu
Ich habe festgestellt, dass der einfachste Weg, die angegebene Aufgabe zu erfüllen, darin besteht, die Nicht-OSGi-Bibliothek in eine OSGi-Bibliothek umzuwandeln, indem das Manifest jedes Paket exportiert und einige symbolische Namen / Versionen hinzufügt. Ich konnte dies sehr einfach mit bnd über Ant-Aufgaben (oder sogar direkten Aufruf der Befehlszeile) machen. Es gibt auch Repositories , die eine "osgi-ified" Version vieler populärer Bibliotheken enthalten. Einige Bibliotheken (joda-time) liefern bereits korrekte OSGi-Manifeste.
Tags und Links osgi