我爲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 dummy包(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虛擬軟件包和我打包的機器的平臺特定的一個應用。到目前爲止這麼好...
問題是我想從一臺機器編譯不同平臺的應用程序。我將如何實現這一目標?
我試圖建立一個屬性與所需的每個平臺,像這樣的(例如,對於Windows 64位)的SWT罐子每個配置文件:
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
但採取這種方法既所述輪廓具體SWT罐子和平臺特有的一個地方我跑的Maven被複制到「lib」目錄下,有三個罐子結束了:
- 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?
在此先感謝。
這正是我第一次嘗試,結果與我原來的問題中描述的完全一樣。看起來無論如何,Maven都會將它運行的系統的SWT包裝起來。 – Alf 2012-04-30 14:18:29
很抱歉,您可能想要試試這個: http://mchr3k.github.com/swtjar/ – hennr 2012-04-30 17:22:18
謝謝,我一定會試試看,儘管我懷疑Maven會嘗試打包無論如何,主機的圖書館。我會及時向大家發佈。 – Alf 2012-05-02 15:44:49