我很清楚这不是一个好主意,但我需要定义具有多个版本的依赖项。我还想知道是否可以解决此类菱形依赖项的所有传递依赖项。例如,如果项目的两个依赖项都依赖于commons-lang
(2.1
和3.0
) 并且项目本身定义了 version 2.5
,我希望能够下载所有三个版本及其传递依赖项。这完全有可能吗?我该怎么做?
问问题
1091 次
1 回答
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)
于 2013-04-04T15:39:27.823 回答