Ivy 2.0 - 带有重复子元素的ivy.xml

时间:2012-03-23 11:17:54

标签: java ant ivy

这是我的ivy.xml的一个例子:

<dependency org="org1" name="module1" rev="1.0.0"> 
  <artifact name="lib1-1.0.0" type="jar" /> 
</dependency> 
<dependency org="org1" name="module1" rev="1.0.0">
  <artifact name="lib2-1.0.0" type="jar" />
</dependency>

使用ivy 1.0我可以下载两个工件

当我将我的版本升级到ivy-2.0.0时,只下载了一个工件。

我必须指定常春藤设置中的某些内容吗? 我知道如果我这样写文件:

<dependency org="org1" name="module1" rev="1.0.0"> 
  <artifact name="lib1-1.0.0" type="jar" /> 
  <artifact name="lib2-1.0.0" type="jar" /> 
</dependency>

它有效!

但为什么不是第一个例子? 有解决方法吗?

1 个答案:

答案 0 :(得分:1)

第一个似乎是非法的。从ivys的角度来看,您声明了两次相同的依赖关系。当完成依赖性解析时,其中一个被删除(ommited),因为假设它们是相等的并且只应该采用一个。对我而言,这样做似乎是不好的做法。

第二个更好,因为它的定义很明确,看起来并不尴尬。

就我个人而言,我认为最好在存储库中部署一个ivy.xml,它可以准确定义此模块发布的工件(请参阅publication tag并可用于某个conf。这种方式你可以指定:

可能的解决方法:

我想可以使用conflict标记设置conflict manager to all。但我不知道它是否有用。

<dependencies>
  <dependency org="org1" name="module1" rev="1.0.0"> 
    <artifact name="lib1-1.0.0" type="jar" /> 
  </dependency> 
  <dependency org="org1" name="module1" rev="1.0.0">
    <artifact name="lib2-1.0.0" type="jar" />
  </dependency>
  <conflict org="org1" module="module1" manager="all"/>
</dependencies>