Разрешение зависимости Maven по-другому, если используемая JVM - x86 или x64? - PullRequest
8 голосов
/ 17 августа 2010

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

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

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

Ответы [ 3 ]

15 голосов
/ 17 августа 2010

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

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

EDIT: при смешивании 32-битной виртуальной машины в 64-битной ОС вы можете увидеть, какое значение виртуальная машина придает системному свойству os.arch, выполнив цель maven

mvn help:evaluate

А затем введите

${os.arch}

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

5 голосов
/ 17 августа 2010

Вы можете сделать это с профилями. Это будет работать только в 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>
1 голос
/ 17 августа 2010

Maven Profiles может быть полезным для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...