SWT アプリケーション用の Maven プロジェクトをセットアップしました。このアプリケーションは、いくつかのプラットフォーム (OS X、Windows 64 ビット、Windows 32 ビット、Linux 64 ビット、および Linux 32 ビット) で実行され、Maven が実行されてパッケージ化されたときにプラットフォームが検出されるように設定しました。アプリケーションは別の宛先ディレクトリに移動します。これを実現するための pom.xml の関連部分は次のとおりです。
<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>
SWT に使用される依存関係は次のとおりです。
<dependencies>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>swt</artifactId>
<version>3.7.2.v3740</version>
</dependency>
...
</dependencies>
わかりやすくするために、ローカル リポジトリに SWT ダミー パッケージ (org.eclipse.swt_3.7.2.v3740f.jar) とすべてのプラットフォーム固有のもの ( org.eclipse.swt.gtk.linux.x86_64_3.7.2) をインストールしました。 .v3740f、org.eclipse.swt.win32.x86_64_3.7.2.v3740f など)。
依存関係をパックする方法は、maven-dependency-plugin を使用して「lib」フォルダーを使用することです。Maven は、SWT ダミー パッケージと、アプリケーションをパッケージ化するマシンのプラットフォーム固有のパッケージの両方をコピーするのに十分スマートです。ここまでは順調ですね...
問題は、1 台のマシンからさまざまなプラットフォーム用にアプリケーションをコンパイルしたいということです。どうすればこれを達成できますか?
次のように、各プラットフォームに必要な SWT jar を使用して、各プロファイルにプロパティを設定しようとしました (Windows 64 ビットの例)。
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
しかし、このアプローチを取ると、プロファイル固有の SWT jarと、Maven を実行しているプラットフォーム固有の jar の両方が「lib」ディレクトリにコピーされ、最終的に 3 つの jar になります。
- swt-3.7.2.v3740.jar
- swt.gtk.linux.x86_64-3.7.2.jar
- swt.win32.x86_64-3.7.2.jar
SWT jar を手動で削除する必要がないように、プロファイルを実行しているマシンを無視してプロファイルを指定する方法はありますか?
前もって感謝します。