2013-04-04 4 views
0

Мне хорошо известно, что это не очень хорошая идея, но мне нужно определить зависимость с несколькими версиями. Я также хотел бы знать, можно ли разрешить все транзитивные зависимости таких алмазных зависимостей. Например, если две зависимости проекта имеют зависимость от commons-lang (2.1 и 3.0), а сам проект определяет версию 2.5, я хотел бы иметь возможность загружать все три версии вместе с их транзитивными зависимостями. Возможно ли это, и как я могу это сделать?Может ли Ivy загружать несколько версий одной и той же зависимости?

ответ

3

Чтобы ответить на мой собственный вопрос, «да», как показано ниже:

<ivy-module version="2.0"> 
    <info organisation="com.foo" 
      module="diamond-dependency" 
      revision="1.0-SNAPSHOT"/> 

    <dependencies> 
     <dependency org="javax.activation" name="activation" rev="1.1-rev-1"/> 
     <dependency org="org.apache.commons" name="commons-email" rev="1.3.1"/> 
     <conflict manager="all"/> 
    </dependencies> 

</ivy-module> 

Ключевая бит в разделе менеджера конфликтов, которые, в данном случае, это говорят, чтобы решить всю противоречивую зависимость.

выше будет иметь дерево зависимостей, глядя, как это (содержащий три различные версии javax.activation:activation:

+- javax.activation:activation:jar:1.1-rev-1:compile 
\- org.apache.commons:commons-email:jar:1.3.1:compile 
    +- javax.mail:mail:jar:1.4.5:compile 
    | \- (javax.activation:activation:jar:1.1:compile - omitted for conflict with 1.1-rev-1) 
    \- (javax.activation:activation:jar:1.1.1:compile - omitted for conflict with 1.1-rev-1) 
+0

Однако, странно, 'javax.activation: активация: баночка: 1.1' не решен. – carlspring

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