У меня есть большой проект, который использует SWT на нескольких разных платформах, таких как Windows (32 и 64 бит), Linux-GTK (32 и 64 бит) и т. Д. Проект имеет несколько модулей в простой структуре:
project-parent
+- core
+- swt-bridge (uses SWT)
+- module1 (uses swt-bridge module)
+- module2
+- ...
+- module17 (uses swt-bridge module)
Я бы хотел иметь возможность запускать свой код из Eclipse на всех поддерживаемых платформах. Например. если я посмотрю на модуль swt-bridge
на 32-разрядной машине с Windows, он должен иметь 32-разрядные зависимости SWT для Windows, а также извлечь необходимые библиотеки DLL в какой-либо каталог, который затем можно добавить в java.library.path
.
Я могу указать различные зависимости, определив профили, активированные os.family
и os.arch
.
<profile>
<id>macos</id>
<activation>
<os>
<family>macosx</family>
<arch>x86</arch>
</os>
</activation>
<properties>
<swt.native.groupId>org.eclipse.swt.carbon.macosx</swt.native.groupId>
<swt.native.artifactId>x86</swt.native.artifactId>
<swt.native.version>3.5.1</swt.native.version>
</properties>
</profile>
Я также могу использовать maven-dependency-plugin
для извлечения любых DLL, файлов .so из SWT JAR в target/swtlib
и использовать их из Eclipse.
Это нормально работает, если я поместил профили в модуль swt-bridge
. Но в этом случае я не вижу свойства, установленные активным профилем из других проектов, например, Я не могу использовать плагин зависимости с этими свойствами (что я хотел бы).
Я думал, что смогу решить эту проблему, перенеся профили в родительский POM, и, действительно, если я создаю весь продукт, он работает. Но таким образом я не могу просто собрать один модуль, потому что Maven будет жаловаться на отсутствующие свойства.
Я уверен, что многие люди сталкиваются с этой проблемой, поэтому должен быть способ справиться с этим должным образом в Maven. Может кто-нибудь сказать мне, что это?