Я создал проект Maven для приложения SWT. Это приложение работает на нескольких платформах (OS X, Windows 64-bit, Windows 32-bit, Linux 64-bit и Linux 32-bit), и я настроил его так, чтобы платформа была обнаружена, когда Maven запущен и упакован приложение отправляется в разные целевые каталоги. Вот соответствующие части pom.xml для достижения этой цели:Создание приложения с несколькими архитектурами SWT с 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>
И зависимость используется для SWT это:
<dependencies>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>swt</artifactId>
<version>3.7.2.v3740</version>
</dependency>
...
</dependencies>
Чтобы сделать вещи ясно, я установил в моем локальном хранилище СВТ фиктивный пакет (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-бит):
<properties>
<swt.artifactId>swt.win32.x86_64</swt.artifactId>
<swt.version>3.7.2</swt.version>
</properties>
Но такой подход как Profile- конкретный SWT баночка и платформозависимых один, где я бег Maven скопирована в «Lib» каталог, в конечном итоге с тремя баночками:
- свтом-3.7.2.v3740.jar
- С.Т. .gtk.linux.x86_64-3.7.2.jar
- swt.win32.x86_64-3.7.2.jar
Есть ли способ, в котором я мог бы указать профиль не обращая внимания на машину, где я запускать его так, чтобы мне не нужно вручную удалять его банку SWT?
Заранее спасибо.
Это именно то, что я пробовал первым, и результаты точно такие же, как те, которые описаны в моем первоначальном вопросе. Кажется, что несмотря ни на что, Maven упаковывает SWT-банку системы, в которой он работает. – Alf
Извините, что вы можете попробовать эту попытку: http://mchr3k.github.com/swtjar/ – hennr
Спасибо, я обязательно попробую, хотя я подозреваю, что Maven попытается упаковать библиотека от хоста не имеет значения. Я буду держать вас в курсе. – Alf