2010-08-09 11 views
2

J'ai un projet maven dont la bibliothèque doit également être un bundle OSGi avec un service déclaratif . J'ai ajouté le dossier OSGI-INF avec le fichier service.xml à l'intérieur de src/java/resources qui sera ajouté au fichier jar. Mais: Lorsque je démarre le projet en tant que projet équinoxe, où je veux vérifier si le service est chargé, j'obtiens l'erreur que le fichier OSGI-INF/service.xml est introuvable. Je suppose que eclipse n'ajoutera pas le dossier resources au classpath au démarrage.Comment déboguer un bundle OSGi à l'intérieur d'eclipse en utilisant le projet structuré maven

BTW: Le MANIFESTE-MF est dans le dossier racine et le pom.xml contient le texte suivant:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
     <manifestFile>META-INF/MANIFEST.MF</manifestFile> 
     </archive> 
    </configuration> 
</plugin> 

anbody a une bonne idée de dire éclipser où trouver les fichiers de métadonnées? J'utilise m2eclipse si cela est pertinent.

Merci à l'avance Hannes

Répondre

2

J'ai les mêmes questions, mais je l'ai retouché manuellement mon pom.xml pour copier la cible/classes génèrent/META-INF/** stuff (MANIFEST.MF, propriété fichiers, XMLs de printemps, ...) dans le dossier ROOT du projet (qui Eclipse PDE prévoit):

  <!-- 
      We copy all stuff from target/classes/META-INF into META-INF/ in order 
      to keep Maven output with PDE. 
     --> 
     <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <id>synch-pde-metadata-from-maven</id> 
        <phase>package</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/META-INF</outputDirectory> 
         <resources> 
          <resource> 
           <directory>target/classes/META-INF</directory> 
           <filtering>false</filtering> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <!-- 
      We delete all stuff from the root bundle's META-INF 
     --> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.4.1</version> 
      <configuration> 
       <filesets> 
        <fileset> 
         <directory>META-INF</directory> 
         <includes> 
          <include>**/*</include> 
         </includes> 
         <followSymlinks>false</followSymlinks> 
        </fileset> 
       </filesets> 
      </configuration> 
     </plugin> 

(nettoyer aussi des choses quand mVN propre est appelé) il est pas vraiment efficace, mais cela fonctionne. Ps: il se peut que vous deviez cliquer avec le bouton droit sur le projet et en faire un projet plug-in pour que cela fonctionne.

0

Le problème est qu'Eclipse a besoin de ce dossier OSGI-INF (et aussi META-INF) à la racine.

J'ai trouvé un lien sur la façon de probablement résoudre le problème. https://www.nuxeo.com/blog/working-with-osgi-and-maven-in-eclipse/

Fondamentalement, ils ont mis le OSGI-INF et dossiers META-INF dans src/main/resources

Puis ils src/main/resources dossier en tant que root du projet OSGI. Alors qu'Eclipse a les deux dossiers à la racine. Pour avoir Soure fichiers disponibles, ils ont ajouté un Linked Resources à src/main/java en ajoutant une entrée au fichier .project

<linkedResources> 
    <link> 
     <name>src</name> 
     <type>2</type> 
     <locationURI>PARENT-1-PROJECT_LOC/java</locationURI> 
    </link> 
</linkedResources> 

Maintenant, il vous suffit de copier le .prject et .classpath fichiers dans src/main/ressources (votre nouvelle racine) et tout devrait fonctionner. Au moment d'écrire ces lignes, je ne l'ai pas testé seul, mais je le ferai dans un proche avenir.