Domanda

ho scritto un'applicazione che utilizza una libreria di terze parti. Ho poi confezionato questo come un vaso eseguibile utilizzando l'esperto-assemblaggio-plugin (producendo un vaso con tutte le dipendenze tra cui alcuni dei vasi terzi).

Avanti ho bisogno di aggiungere questo barattolo a un progetto PDE in modo che possa essere lanciato da Eclipse. Ma per fare questo lavoro ho bisogno di aggiungere alcune delle dipendenze thirs parti per il mio progetto PDE, che si trova già nel vaso confezionato. Così ho dipendenze duplicati. Tutte le idee su come evitare questo? O suggerimento alla documentazione che descrive come questo è fatto correttamente?

È stato utile?

Soluzione

Si dovrebbe costruire un vaso, che è un pacchetto OSGi: in modo che contenga il manifest.mf richiesto con un plug-in id e un numero di versione (questo non cambia il fatto, che il vaso rimane eseguibile). Fare attenzione a aggiungere l'opzione di esportazione-pacchetti per rendere il codice disponibile per altri plug-in / fasci pure.

Dopo di che è possibile installare questo barattolo nella piattaforma di destinazione utilizzato dal progetto PDE (ricerca per la piattaforma di destinazione nelle preferenze), in modo che diventi disponibile per altri plug-in per l'ID (si potrebbe aggiungere che come dipendenza) .

In questo modo, se almeno un plug-in ha bisogno del vostro vaso, esso viene caricato, ma non otterrà caricato diverse volte.

Altri suggerimenti

Credo che sia semplicemente cattiva pratica per includere gli altri vasi nel vostro vaso. Ma se si vuole mantenere in questo modo, come circa la creazione di due vasetti da un accumulo: una piena con le dipendenze, e un semplice da utilizzare in PDE (basta utilizzare più esecuzioni nel montaggio plugin)

Ora sto usando il Maven-fascio-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

per costruire un fascio. Ma come faccio a utilizzare il plugin fascio così crea il file di manifesto per la compilazione vaso con l'esperto di montaggio-plugin, che uso come:

    <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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top