Я создал проект Maven для приложения SWT. Это приложение работает на нескольких платформах (OS X, Windows 64-bit, Windows 32-bit, Linux 64-bit и Linux 32-bit), и я настроил его так, чтобы платформа была обнаружена, когда 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 и т.д.).
Как я устанавливаю зависимости с папкой "lib", используя плагин maven-dependency, и Maven достаточно умен, чтобы скопировать пакет SWT-манекена и платформенный пакет, на котором я упаковываю приложение, Пока что так хорошо...
Проблема в том, что я хотел бы скомпилировать приложение для разных платформ с одной машины. Как я могу это достичь?
Я попытался настроить свойство в каждом профиле с помощью контейнера SWT, необходимого для каждой платформы, например (пример для Windows 64-bit):
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
Но при таком подходе как специфичная для профиля SWT-банка, так и конкретная платформа, в которой я запускаю Maven, копируются в каталог "lib", заканчивая тремя банками:
- свт-3.7.2.v3740.jar
- swt.gtk.linux.x86_64-3.7.2.jar
- swt.win32.x86_64-3.7.2.jar
Есть ли способ указать профиль, игнорирующий машину, на которой я запускаю ее, так что мне не нужно вручную удалять ее SWT-банку?
Спасибо заранее.