Способ управления диапазонами зависимостей для зависимостей вверх по течению с помощью Ivy? - PullRequest
1 голос
/ 08 июля 2011

Я использую Ivy для сборки составного приложения из собственных и сторонних библиотек. Плющ используется для управления зависимостями для построения вышеуказанных библиотек. Для каждой библиотеки доступно несколько совместимых версий, которые можно использовать в собранном приложении. Вопрос в том, как я могу направить ivy NOT выбрать последнюю версию зависимости. Позвольте мне проиллюстрировать это следующим примером:

  • А [3]: В [. 2.5 +], С [. 1.3 +] 1004 *

означает, что пакет A зависит от пакета B любой версии 2.5.0-2.5.X (в пределах ветки 2.5 нет критических изменений, что означает, что все версии в этом диапазоне совместимы). Та же логика применима к C.

Во время сборки приложения я определяю файл Ivy.xml, который просто говорит:

  • Применение: [3]

Это даст команду Ivy извлечь все последние версии B и C в диапазонах, с которыми A совместим. Из-за некоторых бизнес-ограничений я хочу также «сказать»: «вместо последней версии B в определенном диапазоне использовать версию 2.5.6 специально» (допустим, что существует также 2.5.7). Итак, вместо выше, я хочу сказать что-то вроде:

  • Применение: [3], В [2.5.6]

Проблема в том, что Айви выселит B [2.5.6] в пользу 2.5.7. Так что придется использовать какой-то менеджер конфликтов. Я думал о последней совместимой с надеждой, что это позволит указать дополнительный диапазон. Я не могу найти пример этого. Это с учетом того, что мое предположение верно, конечно ...

Ответы [ 2 ]

2 голосов
/ 09 июля 2011

Ответ был так близко, что я не мог его увидеть ...

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">    
<info organisation="some" module="application" />

<publications>
    <artifact name="application" ext="zip" />
</publications>

<dependencies>
    <dependency org="some" name="A" rev="2.8.+" branch="2.8">
        <artifact name="A" ext="zip"/>
    </dependency>
    <dependency org="some" name="B" rev="2.5.6" branch="2.5">
        <artifact name="B" ext="zip"/>
    </dependency>
    <conflict org="some" module="B" rev="2.5.6"/>
</dependencies>

надеюсь, это поможет кому-то еще: -)

2 голосов
/ 09 июля 2011

Атрибут force в объявлении зависимости может быть всем, что вам нужно.

Если это не сработает, я бы посоветовал прочитать документацию ivy по управлению конфликтами:

...