Versuch, ein OSGi-Paket in Maven mit eingebetteten Abhängigkeiten zu erstellen. Transitive Abhängigkeiten vom BND-Klassenpfad können nicht ausgeschlossen werden

8

Grundsätzlich muss mein Webdienst als einzelnes OSGi-Jarbündel bereitgestellt werden können. Deshalb:

  1. Das Paket muss alle Kompatibilitäts- und Laufzeitabhängigkeiten enthalten.
  2. Es muss auch alle nicht-optionalen Abhängigkeiten enthalten, die von diesen Abhängigkeiten abhängen (d. h. die transitiven Abhängigkeiten).

Ich versuche das maven-bundle-plugin zu benutzen, um das zu erreichen. Ich habe Embed-Dependency verwendet, um alle Kompilierungs- und Laufzeitabhängigkeiten in das Bundle zu integrieren, und ich habe Embed-Transitive verwendet, um alle transitiven Abhängigkeiten einzubetten. Ich habe dann herausgefunden, wie man excludeDependencies verwendet, um Maven-Abhängigkeiten vom BND-Klassenpfad auszuschließen (sie werden im Manifest nach Private-Package verschoben), aber für das Leben von mir kann ich nicht herausfinden, wie man die transitiven Abhängigkeiten ausschließt . Egal, was ich mache, die transitiven Abhängigkeiten scheinen immer noch in der Import-Paket-Liste im Manifest zu erscheinen.

Schlimmer noch, es scheint ALLE Abhängigkeiten zu saugen, einschließlich der optionalen, so dass ich viele zusätzliche Sachen bekomme, die ich nicht verwende wie ibatis und jfree. Wenn ich dem Abhängigkeitsmuster jedoch optional = false hinzufüge, erhalte ich eine Warnung, dass keine Abhängigkeiten mit dem Muster übereinstimmen.

Ich habe angefangen, Abhängigkeiten einzeln auszuschließen, aber nach einer Stunde, in der ich die Abhängigkeiten verfolgt habe, habe ich beschlossen, dass es einen besseren Weg geben muss.

Dies ist die aktuelle Inkarnation meiner pom.xml. Kann mir jemand helfen, dies zu lösen?

%Vor%     
bernerbrau 15.09.2011, 22:27
quelle

1 Antwort

3

Ich hatte ein ähnliches Problem, ich benutze Tycho Build, aber eines meiner Bundles ist mit BND gebaut. Siehe Ссылка im Import-Paket I verwende '!', um alle Abhängigkeiten auszuschließen, außer was explizit notwendig ist.

    
jveljan 16.09.2011, 09:22
quelle