Разное решение зависимости Maven, если используемая JVM - x86 или x64

У меня есть репозиторий Maven, настроенный для размещения некоторых библиотек, но мне нужны мои проекты Maven для загрузки разных библиотек в зависимости от того, используется ли JVM для x86 или x64.

Так, например, на компьютере под управлением версии JVM для x86 мне нужно скачать ABC.dll из репозитория в качестве зависимости, но на другом компьютере с версией JVM для x64 мне нужна загрузка XYZ. вместо этого dll.

Как бы я поступил так? Пример файла pom.xml был бы хорош.

8
задан Pascal Thivent 17 August 2010 в 16:17
поделиться

3 ответа

Это можно сделать с помощью профилей. Это работает только в 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>
5
ответ дан 5 December 2019 в 07:56
поделиться

Это будет работать на любой виртуальной машине. Вы можете использовать профили , чтобы иметь альтернативные конфигурации в зависимости от среды.

Профиль содержит блок активации, который описывает, когда сделать профиль активным, за которым следуют обычные элементы 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, поэтому вы может также захотеть добавить Windows под тегами .

РЕДАКТИРОВАТЬ: при смешивании 32-разрядной виртуальной машины с 64-разрядной ОС вы можете увидеть, какое значение виртуальная машина придает системному свойству os.arch , запустив maven goal

mvn help : Assessment

И затем ввод

$ {os.arch}

В качестве альтернативы, цель help: system перечисляет все системные свойства (в произвольном порядке).

15
ответ дан 5 December 2019 в 07:56
поделиться

Профили Maven могут быть вам полезны.

1
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: