Ich möchte eines meiner OSGi-Bundles mit einer War-Package-Struktur bereitstellen, damit es von Struts als Web-Anwendung erkannt wird. Ich benutze Maven, also bekomme ich WAR-Packaging eingebaut und ich habe das Maven-Bundle-Plugin, um das OSGi-kompatible Manifest für mich zu erstellen.
Das Problem ist, dass die beiden nicht zusammen funktionieren. Das Bundle-Plugin ist sich also nicht bewusst, dass die Klassendateien jetzt im Unterordner classes/
liegen und die gebündelten Gläser in lib/
sind, also erzeugt es ein falsches Bundle-classpath
Kopfzeile. Ich könnte manuell den richtigen Header zu meinem pom.xml
hinzufügen, aber ich möchte das automatisch haben. Wie kann ich das tun?
Eine Möglichkeit (mehr oder weniger) dies zu erreichen, ist auf der OPS4J Wiki Seite beschrieben - " Vorteile von maven-bundle-plugin in anderen Projekttypen ".
Sie können die Abhängigkeitseinbettung und die Bundle-ClassPath
-Direktive in Ihrem pom.xml
so konfigurieren, dass sie mit den vom WAR-Plugin verwendeten Speicherorten übereinstimmt. Das maven-bundle-plugin erzeugt dann korrekte Manifest Header.
Die Anweisungen für maven-bundle-plugin könnten folgendermaßen aussehen:
%Vor%ETA : Bei diesem Ansatz habe ich zwei bemerkenswerte Dinge herausgefunden:
WEB-INF
-Verzeichnisse beschweren, denn wenn das Manifest-Ziel ausgeführt wird, hat das War-Plugin sie noch nicht erstellt (es läuft nur zu einer späteren Phase) Bundle-ClassPath
Direktive enthalten ".", oder das Bundle-Plugin wird den Header Import-Packages
durcheinander bringen. Ich habe das in einem JIRA-Problem über Google gefunden, aber ich kann die URL nicht mehr finden. Ansonsten funktioniert es gut.
finden Sie Diese Antwort ist aufschlussreich, da der OP auch die Antwort gepostet hat, die er für dieselbe Frage gefunden hat.
Er gibt eine Lösung für das Einfügen von Web-Stil-Inhalten.
Tags und Links java web-applications maven-2 osgi