SWTアプリケーション用にMavenプロジェクトをセットアップしました。このアプリケーションはいくつかのプラットフォーム(OS X、Windows 64ビット、Windows 32ビット、Linux 64ビット、およびLinux 32ビット)で動作し、Mavenの実行時にパッケージが検出され、パッケージ化されているアプリケーションは異なる宛先ディレクトリに移動します。ここではこれを達成するのpom.xmlから関連する部分です:Mavenで複数のアーキテクチャのSWTアプリケーションを構築する
<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台のマシンからさまざまなプラットフォームのアプリケーションをコンパイルしたいということです。どうすればこれを達成できますか?
私は(Windowsの64ビット用の例)このように、各プラットフォームに必要なSWTジャーと各プロファイルにプロパティを設定しようとしました:
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
しかし、このアプローチの両方のプロフィール - を取ります特定のSWTジャーとプラットフォーム固有の私はMavenのは、3瓶で終わる、「LIB」ディレクトリにコピーされます実行している1:
- SWT-3.7.2.v3740.jar
- スワット
- swt.win32.x86_64-3.7.2.jar
.gtk.linux.x86_64-3.7.2.jar私は私はマシンを無視して、プロファイルを指定することができている方法はありますSWT jarを手動で削除する必要はありません。
ありがとうございます。
これは私が最初に試した結果であり、結果は私の元の質問で説明したものとまったく同じです。何があっても、Mavenは実行中のシステムのSWT jarをパッケージ化しているようです。 – Alf
これを聞いて大変申し訳ありませんが、 http://mchr3k.github.com/swtjar/ – hennr
よりお試しいただけます。ありがとうございます.Mavenがパッケージ化しようとしているとは思いますがホストからのライブラリは何であろうと。私はあなたの投稿を続けます。 – Alf