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:
<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>
E a dependência usada pelo SWT é esta:
<code><dependencies> <dependency> <groupId>org.eclipse</groupId> <artifactId>swt</artifactId> <version>3.7.2.v3740</version> </dependency> ... </dependencies> </code>
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):
<code><properties> <swt.artifactId>swt.win32.x86_64</swt.artifactId> <swt.version>3.7.2</swt.version> </properties> </code>
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.