Construa uma aplicação SWT de arquitetura múltipla com o Maven
Eu configurei um projeto Maven para um aplicativo SWT. Este aplicativo é executado em várias plataformas (OS X, Windows de 64 bits, Windows de 32 bits, Linux de 64 bits e Linux 32 bits) e configurei-o para que a plataforma seja detectada quando o Maven é executado e o pacote aplicativo vai para diretórios de destino diferentes. Aqui estão as partes relevantes do pom.xml para conseguir isso:
<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>
E a dependência usada pelo SWT é esta:
<dependencies>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>swt</artifactId>
<version>3.7.2.v3740</version>
</dependency>
...
</dependencies>
Para deixar claro, instalei em meu repositório local o pacote fictício do SWT (org.eclipse.swt_3.7.2.v3740f.jar) etodos os específicos da plataforma (org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f, org.eclipse.swt.win32.x86_64_3.7.2.v3740f, etc.).
A maneira que eu empacoto dependências é com uma pasta "lib" usando o plugin maven-dependency e o Maven é inteligente o suficiente para copiar tanto o pacote fictício SWT quanto o específico da plataforma da máquina onde estou empacotando o aplicativo. Por enquanto, tudo bem...
O problema é que eu gostaria de compilar o aplicativo para as diferentes plataformas a partir de uma única máquina. Como eu conseguiria isso?
Eu tentei configurar uma propriedade em cada perfil com o jar do SWT necessário para cada plataforma, como este (exemplo para o Windows de 64 bits):
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
Mas, adotando essa abordagem, tanto o jar do SWT específico do perfile o específico da plataforma em que estou executando o Maven é copiado para o diretório "lib", terminando com três jars:
swt-3.7.2.v3740.jarswt.gtk.linux.x86_64-3.7.2.jarswt.win32.x86_64-3.7.2.jarExiste uma maneira em que eu poderia especificar um perfil ignorando a máquina onde estou executando para que eu não precise remover manualmente o seu frasco de SWT?
Desde já, obrigado.