Question

J'ai écrit une application qui utilise une bibliothèque tierce partie. Je l'ai ensuite emballé cela comme un pot exécutable en utilisant le maven-plugin-assemblage (produisant un bocal avec toutes les dépendances, y compris certains des pots tiers).

Ensuite, je dois ajouter ce pot à un projet PDE de sorte qu'il peut être lancé à partir éclipse. Mais pour faire ce travail, je dois ajouter quelques-unes des dépendances thirs parties à mon projet qui est déjà PDE situé dans le pot emballé. Donc, je reçois des dépendances en double. Toutes les idées sur la façon d'éviter cela? Ou suggestion de la documentation qui décrit comment cela se fait correctement?

Était-ce utile?

La solution

Vous devez construire un pot, qui est un faisceau OSGi: il contient le nécessaire manifest.mf avec un plug-in id et un numéro de version (cela ne change pas le fait que le pot reste exécutable). Veillez à ajouter l'option d'exportation-packages pour rendre le code disponible pour d'autres plug-ins / faisceaux ainsi.

Après cela, vous pouvez installer ce pot dans la plate-forme cible utilisée par le projet PDE (recherche de la plate-forme cible dans les préférences), il devient disponible pour d'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 pot, il se charge, mais ne sera pas chargé à plusieurs reprises.

Autres conseils

Je pense qu'il est juste pratique plaine mauvais pour inclure les autres pots dans votre pot. Mais si vous voulez le garder de cette façon, que diriez-vous de créer deux pots d'une construction: une pleine avec dépendances et un simple à utiliser dans la PDE (il suffit d'utiliser plusieurs exécutions dans le plugin Assembly)

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

      <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 plug-in bundle il crée le fichier manifest pour la construction pot avec le maven-plugin-assemblage, que je l'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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top