Frage

Ich habe eine Anwendung geschrieben, die einen Dritten Bibliothek verwenden. Ich habe dann diese als ausführbare jar mit der Maven-Montage-Plugin verpackt (ein Glas mit allen Abhängigkeiten, darunter einige der Dritt Gläser produzieren).

Als nächstes muß ich dieses Glas mit einem PDE-Projekt hinzuzufügen, damit es von Eclipse gestartet werden. Aber um diese Arbeit zu machen brauche ich einige der thirs-Party Abhängigkeiten zu meinem PDE Projekt hinzuzufügen, die bereits in dem verpackten Glas befinden. Also habe ich dupliziert Abhängigkeiten erhalten. Alle Ideen, wie dies zu vermeiden? Oder ein Vorschlag zur Dokumentation, wie beschreibt dies richtig gemacht wird?

War es hilfreich?

Lösung

Sie sollten ein Glas bauen, die ein OSGi-Bundle ist: so ist es die erforderliche manifest.mf mit einem Plug-in-ID und eine Versionsnummer enthält (dies nichts an der Tatsache ändert, dass das Glas ausführbar bleibt). Seien Sie vorsichtig, um den Export-Pakete Option fügen Sie den Code für andere Plug-Ins / Bundles sowie zu machen.

Danach können Sie dieses Glas in die Zielplattform durch das PDE-Projekt (Suche nach Zielplattform in den Einstellungen) verwendet installieren könnten, so dass es für andere Plug-In von der ID verfügbar ist (Sie kann es als Abhängigkeit hinzufügen könnten) .

Auf diese Weise, wenn mindestens ein Plug-in Ihrem Glas braucht, wird es geladen, aber nicht mehrmals geladen werden.

Andere Tipps

Ich denke, es ist einfach nur schlecht Praxis ist es, die anderen Gläser in Ihrem Glas aufzunehmen. Aber wenn man es auf diese Weise halten wollen, wie etwa die Schaffung von zwei Gläser von einem Build: eine volle mit Abhängigkeiten und einen einfachen Gebrauch in PDE (verwenden Sie nur mehrere Ausführungen in der Montage-Plugin)

Ich bin jetzt mit der 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

ein Bündel zu bauen. Aber wie kann ich die Bündel-Plugin verwenden, damit es die Manifest-Datei für das Glas zu bauen mit der Maven-Montage-Plugin erstellt, die ich verwende wie:

    <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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top