2013-09-10 2 views
0

Я ищу способ объявить «зависимость между 2 зависимостями».Ivy: зависимость между 2 зависимостями

Например, в моем модуле, я имею в ivy.xml следующие строки:

<dependencies> 
    <dependency org="org.slf4j" name="slf4j-api" rev="${slf4japiversion}"/> 
    <dependency org="ch.qos.logback" name="logback-classic" rev="1.0.13" conf="test->default"/> 
</dependencies> 

Моя проблема заключается в том, что Logback-классический 1.0.13 зависит от SLF4J-апи 1.7.5 и мой модуль зависит на 1.6.6 (значение slf4japiversion).

Я не могу изменить slf4japiversion, но в будущем он может быть обновлен кем-то другим.

Есть ли способ объявить зависимость от журнала, чтобы получить версию, совместимую с моей версией slf4j-api?

ответ

1

Вы можете указать директиву переопределения, чтобы заставить разрешение к конкретной версии зависимости:

<dependencies> 
     <dependency org="org.slf4j" name="slf4j-api" rev="1.6.6" conf="compile->default"/> 
     <dependency org="ch.qos.logback" name="logback-classic" rev="1.0.13" conf="runtime->default"/> 

     <override org="org.slf4j" module="slf4j-api" rev="1.6.6"/> 
    </dependencies> 

слово предупреждения, когда понижение зависимости. Если logback использует функцию, поддерживаемую только версией 1.7.5, решение не будет работать. Скорее всего, библиотека обратно совместима.

+0

Спасибо за ваш ответ. Таким образом, нет возможности автоматически выбрать версию журнала, совместимую с моей версией slf4j? – Ekans

+0

@Ekans Вы можете посмотреть зависимости в журнале и вернуться во времени. Сайт Maven Central действительно полезен для этого (http://search.maven.org/). Разве не проще было бы просто обновить свой код для совместимости с последней версией SLF4J? –

+0

Да, было бы проще, но эта версия исправлена ​​другим моим проектом. И иногда версия slf4j обновляется без уведомления. Итак, кроме вручную, у меня нет другого способа получить правильную версию logback? – Ekans

Смежные вопросы