2010-06-10 17 views
0

J'ai écrit une application qui utilise une bibliothèque tierce. J'ai ensuite empaqueté ceci en tant que jar exécutable en utilisant le maven-assembly-plugin (produisant un jar avec toutes les dépendances, y compris certains des jars de tiers).Construire un pot à utiliser dans une EPE d'éclipse?

Ensuite, je dois ajouter ce pot à un projet PDE afin qu'il puisse être lancé depuis eclipse. Mais pour que cela fonctionne, j'ai besoin d'ajouter certaines des dépendances à mon projet PDE qui est déjà situé dans le pot emballé. J'ai donc des dépendances dupliquées. Des idées sur la façon d'éviter cela? Ou une suggestion à la documentation qui décrit comment cela est fait correctement?

Répondre

1

Vous devriez construire un jar, c'est un bundle OSGi: il contient donc le manifest.mf requis avec un identifiant de plug-in et un numéro de version (cela ne change rien au fait que le jar reste exécutable). Veillez à ajouter l'option export-packages pour que le code soit également disponible pour les autres plug-ins/bundles. Ensuite, vous pouvez installer ce fichier dans la plate-forme cible utilisée par le projet PDE (recherche de la plateforme cible dans les préférences), afin qu'il soit disponible pour les autres plug-ins par l'ID (vous pouvez l'ajouter en tant que dépendance).). De cette façon, si au moins un plug-in a besoin de votre jar, il sera chargé, mais ne sera pas chargé plusieurs fois.

0

Je pense que c'est tout simplement une mauvaise habitude d'inclure les autres pots dans votre pot. Mais si vous voulez conserver cela, que diriez-vous de créer deux jars à partir d'une construction: une complète avec dépendances, et une simple à utiliser dans PDE (juste utiliser plusieurs exécutions dans le plugin d'assemblage)

0

Je suis maintenant en utilisant le maven-plugin-bundle:

 <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>1.4.0</version> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName> 
        <Bundle-Name>${pom.name}</Bundle-Name> 
        <Bundle-Version>${pom.version}</Bundle-Version> 
        <Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator> 
        <Private-Package>org.wso2.mbp.sample01</Private-Package> 
       </instructions> 
      </configuration> 
     </plugin> 

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

pour construire un paquet. Mais comment puis-je utiliser le plugin bundle afin qu'il crée le fichier MANIFEST pour la construction jar avec le maven-assembly-plugin, que j'utilise comme:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <appendAssemblyId>true</appendAssemblyId> 
     <finalName>myApp</finalName> 

     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs>   
     <archive> 
     <manifest> 
      <mainClass>com.TestMain</mainClass>      
      <packageName>com.</packageName> 
     </manifest> 
     </archive>  
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>assembly</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin>