OSGI Bundle vs Jar-Abhängigkeit

8

Ich versuche den Unterschied zwischen den folgenden

zu verstehen %Vor%

AND

%Vor%

Das Dal-Artefakt selbst hat eine Verpackung, die als Bündel spezifiziert ist:

%Vor%

Wenn ich jetzt das dal-Artefakt veröffentliche, sehe ich es im Repo als ein Jar (mit einem Manifest darin) veröffentlicht. In diesem Fall sollte meine Abhängigkeit von dal sein. Sollte es vom Typ Bündel oder Glas sein? Wenn ich OSGI mache, gehe ich davon aus, den Typ als Bundle anzugeben. Ist das richtig? Oder kann ich hier nur eine Jar-Abhängigkeit haben?

    
Sudoer 16.02.2013, 18:25
quelle

1 Antwort

11

Wenn Sie eine Abhängigkeit in Maven deklarieren, können Sie nur von einem normalen Jar und nicht von einem Bündel abhängig sein, da Maven die OSGi-Umgebungseinschränkungen nicht erkennt.

Siehe diese Frage:

Warum kann man kein osgi-Paket finden? Abhängigkeit?

Wenn Sie Ihr Projekt kompilieren, brauchen Sie sich über die OSGi-Umgebung noch keine Gedanken zu machen (aber sollten!). Zum Beispiel wird es sich nicht beschweren, wenn Sie Pakete verwenden, die nicht vom Bundle exportiert wurden sind abhängig von ....

Wenn Sie versuchen, Ihr Bundle in einem OSGi-Container zu deployen, wenn Sie Ihre Abhängigkeiten zu den von Ihnen verwendeten 'dal' -Paketen korrekt deklariert haben, einschließlich der Version (die Sie normalerweise dem maven-bundle-plugin überlassen sollten) für Sie basierend auf Ihrem POM), wird es nur aufgelöst, wenn es ein Bündel innerhalb des Containers gibt, der die benötigten Pakete in der richtigen Version (oder im Versionsbereich) exportiert.

Wenn man bedenkt, dass "dal" bereits ein Bündel zu sein scheint, müssen Sie nur sicherstellen, dass Sie Ihr Bündel und "dal" zusammen einsetzen und alles funktioniert.

Wenn Sie versehentlich eine Abhängigkeit von einem privaten Paket von 'dal' hinzugefügt haben, obwohl Maven es gerne für Sie kompiliert, werden Sie, wenn Sie es in OSGi werfen, von einer fiesen Verdrahtungsausnahme begrüßt:)

Beachten Sie, dass ein Bündel nur ein normales jar ist, das OSGi-Metadaten im Manifest enthält (Bundle-SymbolicName, Bundle-Version usw.). Wenn Sie OSGi nicht verwenden, funktioniert ein Bundle wie jeder andere Jar.

Wie auch immer, wenn Sie weitere Informationen wünschen, überprüfen Sie diese Frage:

Was bedeutet Typ " bündeln "in einer Abhängigkeit maven?

    
Renato 17.02.2013, 22:04
quelle

Tags und Links