Pregunta

He escrito una aplicación que utilice una biblioteca de terceros. entonces he empaquetado esto como un tarro ejecutable usando el maven-montaje-plugin (produciendo un tarro con todas las dependencias entre ellos algunos de los frascos de terceros).

A continuación tengo que añadir este frasco a un proyecto PDE para que pueda ser lanzado desde eclipse. Pero para que esto funcione tengo que añadir algunas de las dependencias thirs bandas para mi proyecto PDE que ya se encuentra en el tarro de empaquetado. Por lo que obtener las dependencias duplicados. Cualquier ideas sobre cómo evitar esto? O sugerencia a la documentación que describe cómo se hace esto correctamente?

¿Fue útil?

Solución

Se debe construir un frasco, que es un paquete OSGi: por lo que contiene el manifest.mf requerido con un plug-in de identificación y un número de versión (esto no cambia el hecho de que el frasco sigue siendo ejecutable). Tenga cuidado de añadir a la opción de paquetes de exportación para hacer el código disponible para otros plug-ins / bundles también.

Después de que se puede instalar este cántaro en la plataforma de destino utilizado por el proyecto de la PDE (búsqueda de Plataforma de destino en las preferencias), de modo que esté disponible para otros plug-ins por el ID (se podría añadir como una dependencia) .

De esta manera, si por lo menos un plug-in necesita su frasco, que se carga, pero no conseguirá cargado varias veces.

Otros consejos

Creo que es una práctica mal simplemente para incluir los otros frascos en su frasco. Pero si quieres que siga siendo así, ¿qué hay de la creación de dos frascos de una construcción: uno lleno con las dependencias, y un sencillo para su uso en la PDE (sólo tiene que utilizar múltiples ejecuciones en el conjunto de plug-in)

ahora estoy utilizando el experto-haz-plugin:

      <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

para construir un paquete. Pero, ¿cómo puedo usar el plugin paquete por lo que crea el archivo MANIFEST para la acumulación frasco con la experta en montaje-plugin, que utilizo como:

    <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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top