这是我的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>它起作用了!
但是为什么不是第一个例子呢?有解决办法吗?
发布于 2012-03-23 19:43:24
第一个看起来是非法的。从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>https://stackoverflow.com/questions/9838297
复制相似问题