Przygotowałem projekt Maven dla aplikacji SWT. Ta aplikacja działa na kilku platformach (OS X, Windows 64-bit, 32-bitowy system Windows, 64-bitowy system Linux i 32-bitowy system Linux) i skonfigurowałem ją tak, aby platforma była wykrywana podczas uruchamiania Maven i pakowania aplikacja trafia do różnych katalogów docelowych. Tutaj są odpowiednie części z pom.xml do osiągnięcia tego celu:Tworzenie aplikacji architektury wielostronicowej SWT z Maven
<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>
a zależność używany SWT to:
<dependencies>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>swt</artifactId>
<version>3.7.2.v3740</version>
</dependency>
...
</dependencies>
Żeby było jasne, mam zainstalowane w moim lokalnym repozytorium SWT pakiet dummy (org.eclipse.swt_3.7.2.v3740f.jar) i all te specyficzne dla platformy (org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f, org.eclipse.swt.win32.x86_64_3 .7.2.v3740f itp.).
Sposób, w jaki pakuję zależności, jest z folderem "lib" przy użyciu wtyczki zależnej od maven, a Maven jest na tyle sprytny, aby skopiować zarówno pakiet atrap SWT, jak i platformę specyficzną dla maszyny, w której pakuję podanie. Do tej pory tak dobrze ...
Problem polega na tym, że chciałbym skompilować aplikację dla różnych platform z jednego komputera. Jak to osiągnąć?
Próbowałem konfigurowania właściwości w każdym profilu ze słoika SWT potrzebnego dla każdej platformy, tak (przykład dla Windows 64-bitowy):
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
Ale biorąc to podejście zarówno profile- specyficzny SWT słoik i platforma-specyficzny gdzie biegnę Maven skopiowane do katalogu "lib", kończąc na trzech słoików:
- SWT-3.7.2.v3740.jar
- swt .gtk.linux.x86_64-3.7.2.jar
- swt.win32.x86_64-3.7.2.jar
Czy istnieje sposób, w jaki mogę określić profil ignorując maszynę gdzie jestem uruchamiając go, aby nie trzeba ręcznie usuwać jego pliku SWT?
Z góry dziękuję.
To jest dokładnie to, co próbowałem pierwszy, a wyniki są dokładnie takie same jak te opisane w moim oryginalnym pytaniu. Wygląda na to, że niezależnie od tego, Maven pakuje słoik SWT systemu, w którym działa. – Alf
Przykro mi to słyszeć, ale warto spróbować, niż: http://mchr3k.github.com/swtjar/ – hennr
Dzięki, na pewno spróbuję, chociaż podejrzewam, że Maven spróbuje spakować biblioteka od hosta bez względu na wszystko. Będę was informować. – Alf