Erstellen Sie mit Maven eine SWT-Anwendung mit mehreren Architekturen

Ich habe ein Maven-Projekt für eine SWT-Anwendung eingerichtet. Diese Anwendung läuft auf mehreren Plattformen (OS X, Windows 64-Bit, Windows 32-Bit, Linux 64-Bit und Linux 32-Bit) und ich habe sie so eingerichtet, dass die Plattform erkannt wird, wenn Maven ausgeführt und verpackt wird Anwendung geht zu verschiedenen Zielverzeichnissen. Hier sind die relevanten Teile aus pom.xml, um dies zu erreichen:

<code><profiles>
  <profile>
    <id>linux_x86_64</id>
    <activation>
      <os>
        <name>linux</name>
        <arch>amd64</arch>
      </os>
    </activation>
    <build>
      <directory>${project.basedir}/target/${project.version}/linux_x86_64</directory>
    </build>
  </profile>

  <profile>
    <id>win32_x86_64</id>
    <activation>
      <os>
        <name>linux</name>
        <arch>i386</arch>
      </os>
    </activation>
    <build>
      <directory>${project.basedir}/target/${project.version}/win32_x86_64</directory>
    </build>
    </profile>
  ...
</profiles>
</code>

Und die für SWT verwendete Abhängigkeit ist folgende:

<code><dependencies>
  <dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>swt</artifactId>
    <version>3.7.2.v3740</version>
  </dependency>
...
</dependencies>
</code>

Zur Verdeutlichung habe ich in meinem lokalen Repository das SWT-Dummy-Paket (org.eclipse.swt_3.7.2.v3740f.jar) und installiertalles die plattformspezifischen (org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f, org.eclipse.swt.win32.x86_64_3.7.2.v3740f usw.).

Die Art und Weise, wie ich Abhängigkeiten packe, ist mit einem "lib" -Ordner unter Verwendung des Maven-Dependency-Plugins und Maven ist intelligent genug, um sowohl das SWT-Dummy-Paket als auch das plattformspezifische der Maschine, auf der ich die Anwendung packe, zu kopieren. So weit, ist es gut...

Das Problem ist, dass ich die Anwendung für die verschiedenen Plattformen von einer einzigen Maschine kompilieren möchte. Wie würde ich das erreichen?

Ich habe versucht, in jedem Profil eine Eigenschaft mit der für jede Plattform erforderlichen SWT-JAR einzurichten (Beispiel für Windows 64-Bit):

<code><properties>
  <swt.artifactId>swt.win32.x86_64</swt.artifactId>
  <swt.version>3.7.2</swt.version>
</properties>
</code>

Bei diesem Ansatz wird jedoch sowohl das profilspezifische SWT-Jar verwendetund Die plattformspezifische Version, auf der Maven ausgeführt wird, wird in das "lib" -Verzeichnis kopiert und enthält drei Gläser:

swt-3.7.2.v3740.jarswt.gtk.linux.x86_64-3.7.2.jarswt.win32.x86_64-3.7.2.jar

Gibt es eine Möglichkeit, ein Profil anzugeben, das den Computer, auf dem ich es ausführe, ignoriert, damit ich sein SWT-Jar nicht manuell entfernen muss?

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage