这是我的 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 时,仅下载其中一个工件。
Ivy 设置中是否有我必须指定的内容? 我知道如果我这样写文件:
<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>
它有效!
但是为什么不是第一个例子呢? 有解决办法吗?
最佳答案
第一个似乎是非法的。从ivys的角度来看,您声明了相同的依赖关系两次。当依赖性解析完成时,其中之一将被删除(省略),因为假设它们是相等的并且只应采用一个。对我来说,这样做似乎是不好的做法。
第二个要好得多,因为它的定义很清晰,而且看起来并不尴尬。
就我个人而言,我认为最好在存储库中部署一个 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>
关于java - ivy 2.0 - ivy.xml 具有重复的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838297/