Pergunta

Eu escrevi um aplicativo que usa uma biblioteca de terceiros. Em seguida, empacotei isso como um frasco executável usando o maven-montagem-plugin (produzindo um frasco com todas as dependências, incluindo alguns dos frascos de terceiros).

Em seguida, preciso adicionar esse frasco a um projeto PDE para que ele possa ser lançado a partir do Eclipse. Mas, para fazer esse trabalho, preciso adicionar algumas das dependências do THRS-Party ao meu projeto PDE, que já está localizado no frasco embalado. Então, eu recebo dependências duplicadas. Alguma idéia de como evitar isso? Ou sugestão para documentação que descreva como isso é feito corretamente?

Foi útil?

Solução

Você deve construir um frasco, que é um pacote OSGI: para que ele contém o manifesto necessário.mf com um ID do plug-in e um número de versão (isso não altera o fato, que o frasco permanece executável). Tenha cuidado para adicionar a opção Packages de exportação para disponibilizar o código para outros plug-ins/pacotes.

Depois disso, você pode instalar esse frasco na plataforma de destino usada pelo projeto PDE (pesquise a plataforma de destino nas preferências), para que fique disponível para outros plug-ins pelo ID (você pode adicioná-lo como uma dependência).

Dessa forma, se pelo menos um plug-in precisar do seu frasco, ele será carregado, mas não será carregado várias vezes.

Outras dicas

Eu acho que é simplesmente uma péssima prática incluir os outros frascos em sua jarra. Mas se você quiser mantê -lo dessa maneira, que tal criar dois frascos de uma construção: um completo com dependências e um simples a ser usado no PDE (basta usar várias execuções no plugin Assembly)

Agora estou usando o Maven-Bundle-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 um pacote. Mas como faço para usar o plug-in de pacote, para que ele crie o arquivo de manifesto para a construção da jar com a plugina da montagem do maven, que eu uso 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top