2017-03-24 1 views
0

J'essaie de créer un assemblage Karaf en utilisant Maven (et NetBeans). Je crée mes bundles à l'aide de services déclaratifs, mais j'ai des problèmes pour créer des fichiers de fonctionnalités. Une partie de mon problème est les messages d'erreur générés par OSGi. Mais j'ai des questions plus générales.Moyen correct de générer des fichiers de caractéristiques pour Karaf?

J'ai découvert que je peux appeler karaf-maven-plugin dans le projet qui crée mes bundles et qu'il génère ce qui semble être un fichier de caractéristiques complet basé sur les dépendances de l'ensemble. (Méthode 1)

Cependant, j'ai lu quelque part que la création d'un fichier de caractéristiques avec karaf-maven-plugin ne devrait normalement être fait dans un projet avec feature emballage. Si je fais cela, il me semble que je dois créer le fichier de caractéristiques à la main, ce qui n'est pas très amusant. (Méthode 2)

Peu importe la méthode que j'utilise, j'ai été incapable de générer avec succès un assembly Karaf qui contient autre chose que de simples paquets sans aucune dépendance. Je suis actuellement bloqué en essayant d'installer un seul paquet qui doit emballer certaines dépendances non-OSGi. La méthode 1 ci-dessus génère le contenu wrap (protocole <feature> et wrap:). Tout ce que je reçois est l'erreur suivante:

Failed to execute goal org.apache.karaf.tooling:karaf-maven-plugin:4.1.0:assembly (default-assembly) on project EnoceanBridgeAdmin: Unable to build assembly: [wrap/0.0.0]

EnoceanBridgeAdmin est l'emballage karaf-assembly que je suis en train de construire. Il a une dépendance sur le paquet qui contient le fichier généré fonction (où wrap est référencé):

<dependency> 
    <groupId>net.winnall.enocean.service.impl</groupId> 
    <artifactId>EnoceanBridgeSASS.Impl</artifactId> 
    <version>0.99.99</version> 
    <type>xml</type> 
    <classifier>features</classifier> 
</dependency> 

Mes questions:

  1. est-méthode 1 ci-dessus une utilisation correcte?
  2. Puis-je générer automatiquement un fichier de caractéristiques pour utiliser la méthode 2?
  3. Le message d'erreur disparaîtra-t-il une fois la méthode 1 ou 2 triée?

Steve

Répondre

0

J'ai résolu moi-même.

  1. Méthode 1 ne fonctionne pas car karaf-maven-plugin génère <feature> définitions pour wrap. Ceux-ci provoquent l'erreur mentionnée ci-dessus. Apparemment - au moins avec Karaf 4.1.0 - le protocole wrap: est utilisé dans un fichier de caractéristiques sans définition préalable <feature>.
  2. La méthode 2 (écrire le fichier de caractéristiques vous-même) est donc la seule option viable en raison du comportement de karaf-maven-plugin.
  3. Oui, le message d'erreur a disparu :-)