常春藤可以下载相同依赖的多个版本吗?

时间:2013-04-04 10:12:34

标签: ivy

我很清楚这不是一个好主意,但我需要定义一个具有多个版本的依赖项。我还想知道是否有可能解决这种钻石依赖的所有传递依赖性。例如,如果项目的两个依赖项都依赖于commons-lang2.13.0)并且项目本身定义了版本2.5,那么我希望能够下载所有三个版本及其传递依赖项。这有可能,我该怎么做?

1 个答案:

答案 0 :(得分: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)