这是我的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>
它有效!
但为什么不是第一个例子? 有解决方法吗?
答案 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>