Zbuduj aplikację SWT z wieloma architekturami z Maven
Ustawiłem projekt Maven dla aplikacji SWT. Ta aplikacja działa na kilku platformach (OS X, 64-bitowy Windows, 32-bitowy Windows, 64-bitowy Linux i 32-bitowy Linux) i skonfigurowałem ją tak, aby platforma była wykrywana po uruchomieniu Maven i zapakowaniu aplikacja trafia do różnych katalogów docelowych. Oto odpowiednie części z pom.xml, aby to osiągnąć:
<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>
A zależność używana dla SWT to:
<code><dependencies> <dependency> <groupId>org.eclipse</groupId> <artifactId>swt</artifactId> <version>3.7.2.v3740</version> </dependency> ... </dependencies> </code>
Aby wyjaśnić, zainstalowałem w moim lokalnym repozytorium pakiet sztuczny SWT (org.eclipse.swt_3.7.2.v3740f.jar) iwszystko 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 za pomocą folderu „lib” z wykorzystaniem wtyczki zależnej od Maven, a Maven jest wystarczająco inteligentny, aby skopiować zarówno atrapę pakietu SWT, jak i specyficzną dla platformy maszynę, na której pakuję aplikację. Jak na razie dobrze...
Problem polega na tym, że chciałbym skompilować aplikację dla różnych platform z jednego komputera. Jak to osiągnąć?
Próbowałem skonfigurować właściwość w każdym profilu ze słoikiem SWT potrzebnym dla każdej platformy, jak ta (przykład dla 64-bitowego systemu Windows):
<code><properties> <swt.artifactId>swt.win32.x86_64</swt.artifactId> <swt.version>3.7.2</swt.version> </properties> </code>
Ale biorąc to pod uwagę, zarówno słoik SWT specyficzny dla profilui ten specyficzny dla platformy, na którym używam Maven, zostanie skopiowany do katalogu „lib”, kończąc na trzech słoikach:
swt-3.7.2.v3740.jarswt.gtk.linux.x86_64-3.7.2.jarswt.win32.x86_64-3.7.2.jarCzy mogę określić profil ignorujący maszynę, na której go używam, aby nie trzeba było ręcznie usuwać jego słoika SWT?
Z góry dziękuję.