Bundle OSGI vs pot de dépendance
J'essaie de comprendre la différence entre les
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
ET
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>bundle</type>
</dependency>
Le dal artefact lui-même a de l'emballage spécifié en tant que bundle:
<packaging>bundle</packaging>
Maintenant, quand je déployer le dal artefact, je vois qu'il a publié dans le repo comme un pot (avec un manifeste à l'intérieur). Dans ce cas, que dois-je la dépendance de dal. Devrait-il être de type bundle ou un bocal? Si je fais OSGI, je suppose que pourrait avoir le type spécifié en tant que bundle. Est-ce correct? Ou, puis-je avoir un pot de dépendance?
OriginalL'auteur Sudoer | 2013-02-16
Vous devez vous connecter pour publier un commentaire.
Lorsque vous déclarez une dépendance Maven, vous ne peut dépendre que d'une normale de Pot, pas un paquet, parce que Maven ne reconnaît pas le OSGi restrictions d'environnement.
Voir cette question:
Pourquoi ne peut-maven trouver un bundle osgi dépendance?
Au moment de la compilation de votre projet, vous n'avez pas besoin de s'inquiéter (mais devrait l'être!) à propos de l'environnement OSGi encore... par exemple, il ne se plaindra pas si vous essayez d'utiliser les paquets qui ne sont pas exportés par le bundle vous êtes en fonction de l'....
Lorsque vous essayez de déployer votre faisceau à l'intérieur d'un conteneur OSGi, si vous déclarer correctement vos dépendances sur le " dal " paquets que vous utilisez, y compris bien sûr la version (qui généralement vous devez laisser pour le maven-bundle-plugin pour le faire pour vous en fonction de votre POM), il ne sera résolu que si il y a un faisceau à l'intérieur du conteneur qui exporte les paquets nécessaires à la bonne version (ou version).
Considérant que 'dal' semble être un bundle déjà, vous avez juste à vous assurer déployer le bundle et 'dal' ensemble et tout fonctionnera correctement.
Toutefois, si vous avez par erreur ajouté une dépendance sur un colis privés de 'dal', bien que Maven sera heureux de le compiler pour vous, lorsque vous jeté dans OSGi, vous serez accueillis par une mauvaise câblage exception 🙂
Avis qu'un bundle est un pot qui contient OSGi métadonnées dans le manifeste (Bundle-SymbolicName, Bundle-Version etc). Donc, si vous n'utilisez pas OSGi, un bundle fonctionne comme tout autre bocal.
Mais de toute façon, si vous voulez un peu plus d'infos, consultez cette question:
Quelle est la signification de type "bundle" dans une dépendance maven?
Les dépendances sera RÉSOLU lorsque vous INSTALLEZ le paquet dans le conteneur OSGi. Comme OSGi est un environnement dynamique, vous pouvez installer un bundle à tout moment... Si le groupe arrive à l'état RÉSOLU, alors il peut être DÉMARRÉ. En d'autres termes, l'installation est une sorte de dynamique de la compilation... si le faisceau passe, il est garanti qu'au moment de l'installation, toutes les importations étaient satisfaits, de sorte que le faisceau peut commencer.
Il n'y a aucun moyen OSGi peut résoudre votre faisceau de dépendances avant de vous en fait essayez de l'installer car cela dépendra de l'ensemble de bundles disponibles au moment de l'installation. Maven, d'autre part, utilise le Java normal de la compilation de la procédure, en ignorant OSGi règles de visibilité... c'est la principale différence.
OriginalL'auteur Renato