Wie kann ich WAR-Packaging und OSGi-Paket-Erstellung in Maven kombinieren?

8

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?

    
Hanno Fietz 20.10.2009, 07:58
quelle

2 Antworten

18

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:

  • Das Bundle-Plugin wird sich über fehlende 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)
  • Obwohl dies für die eigentliche Webanwendung nicht sinnvoll ist, muss die 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.

    
Pavol Juhos 20.10.2009, 09:19
quelle
-1

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.

    
bigbadmouse 20.07.2017 08:14
quelle