У меня есть репозиторий Maven, настроенный для размещения некоторых библиотек, но мне нужны мои проекты Maven для загрузки разных библиотек в зависимости от того, используется ли JVM для x86 или x64.
Так, например, на компьютере под управлением версии JVM для x86 мне нужно скачать ABC.dll из репозитория в качестве зависимости, но на другом компьютере с версией JVM для x64 мне нужна загрузка XYZ. вместо этого dll.
Как бы я поступил так? Пример файла pom.xml был бы хорош.
Это можно сделать с помощью профилей. Это работает только в JVM Sun.
<profiles>
<profile>
<id>32bits</id>
<activation>
<property>
<name>sun.arch.data.model</name>
<value>32</value>
</property>
</activation>
<dependencies>
...
</dependencies>
</profile>
<profile>
<id>64bit</id>
<activation>
<property>
<name>sun.arch.data.model</name>
<value>64</value>
</property>
</activation>
<dependencies>
...
</dependencies>
</profile>
</profiles>
Это будет работать на любой виртуальной машине. Вы можете использовать профили , чтобы иметь альтернативные конфигурации в зависимости от среды.
Профиль содержит блок активации, который описывает, когда сделать профиль активным, за которым следуют обычные элементы pom, такие как зависимости:
<profiles>
<profile>
<activation>
<os>
<arch>x86</arch>
</os>
</activation>
<dependencies>
<dependency>
<!-- your 32-bit dependencies here -->
</dependency>
</dependencies>
</profile>
<profile>
<activation>
<os>
<arch>x64</arch>
</os>
</activation>
<dependencies>
<!-- your 64-bit dependencies here -->
</dependencies>
</profile>
</profiles>
Как вы упомянули библиотеки DLL, я предполагаю, что это только для Windows, поэтому вы может также захотеть добавить
под тегами
.
РЕДАКТИРОВАТЬ: при смешивании 32-разрядной виртуальной машины с 64-разрядной ОС вы можете увидеть, какое значение виртуальная машина придает системному свойству os.arch
, запустив maven goal
mvn help : Assessment
И затем ввод
$ {os.arch}
В качестве альтернативы, цель help: system
перечисляет все системные свойства (в произвольном порядке).