OSGI-Bundle vs jar-Abhängigkeit
Ich versuche zu verstehen, den Unterschied zwischen den folgenden
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
UND
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>bundle</type>
</dependency>
Dal Artefakt selbst hat Verpackung angegeben-bundle:
<packaging>bundle</packaging>
Wenn ich nun die Bereitstellung der dal Artefakt, ich sehe es veröffentlicht in den repo als ein Glas (mit einem manifest innerhalb es). In diesem Fall, was sollte meine Abhängigkeit dal werden. Sollte es vom Typ bundle oder Glas? Wenn ich das Tue, OSGI, davon gehe ich Weg wäre, wenn die angegebene Art als bundle. Ist das richtig? Oder kann ich nur eine jar-Abhängigkeit hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie erklären, eine Abhängigkeit in Maven, Sie können nur hängen Sie auf ein normales Glas, kein bundle, weil Maven nicht erkennen, die der OSGi-Umgebung Einschränkungen.
Siehe diese Frage:
Warum kann nicht maven finden Sie eine osgi-bundle-Abhängigkeit?
In der Zeit, die Sie kompilieren Sie Ihr Projekt, Sie brauchen keine sorgen zu machen (sollte aber!) über die OSGi-Umgebung noch... zum Beispiel, es wird sich nicht beschweren, wenn Sie versuchen, Pakete werden nicht exportiert, von der bundle-Sie sind je nach....
Wenn Sie versuchen, bereitstellen von Bundles innerhalb einer OSGi-container, wenn Sie richtig deklariert Abhängigkeiten zu den 'dal' - Pakete, die Sie verwenden, darunter natürlich auch die version (die in der Regel lassen Sie für das maven-bundle-plugin zu tun für Sie basierend auf Ihren POM), es wird nur gelöst werden, wenn ein bundle im container exportiert die benötigten Pakete in der richtigen version (oder version Bereich).
Wenn man bedenkt, dass 'dal' zu sein scheint, ein Bündel bereits, Sie müssen nur sicherstellen, dass bereitstellen, die Ihre Bündel und 'dal' zusammen und alles funktioniert Prima.
Allerdings, wenn Sie versehentlich Hinzugefügt, die eine Abhängigkeit auf ein privates Paket von 'dal', obwohl Maven gerne kompilieren es für Sie, wenn Sie geworfen es im OSGi-empfangen werden Sie von einer fiesen Verdrahtung Ausnahme 🙂
Beachten Sie, dass ein bundle ist nur eine normale jar-Datei, die enthält OSGi-Metadaten in das manifest (Bundle-SymbolicName, Bundle-Version etc). Also, wenn Sie nicht verwenden OSGi bundle wird wie alle anderen jar.
Aber trotzdem, wenn Sie etwas mehr info, überprüfen Sie diese Frage:
Was ist die Bedeutung des Typs "bündeln" in einem maven-Abhängigkeit?