我正在使用Ivy从内部开发和第三方库中组装复合应用程序。 Ivy用于管理构建上述库的依赖项。对于每个库,有多个可用的兼容版本,可以在组装的应用程序中使用。问题是如何指导常春藤不要选择最新版本的依赖项。让我用以下例子来说明:
意味着包A依赖于任何版本2.5.0-2.5.X的B包(在2.5分支内没有重大更改,这意味着该范围内的所有版本都是兼容的)。相同的逻辑适用于C.
在应用程序组装时,我定义了一个Ivy.xml文件,它只是说:
这将指示Ivy在A兼容的范围内提取B和C的所有最新版本。由于一些业务限制,我还要“说”:“而不是定义范围内的最新版本的B使用版本2.5.6”(假设2.5.7也存在)。所以,而不是上面我想说的话:
问题是Ivy将驱逐B [2.5.6]而支持2.5.7。因此必须使用某种冲突管理器。我正在考虑最新兼容,希望它允许指定一个额外的范围。我找不到一个例子。我的猜测是正确的,当然......
答案 0 :(得分:2)
dependency声明中的强制属性可能就是您所需要的。
如果这不起作用,我建议阅读有关冲突管理的常春藤文档:
答案 1 :(得分:2)
答案太近了,我看不出来......
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="some" module="application" />
<publications>
<artifact name="application" ext="zip" />
</publications>
<dependencies>
<dependency org="some" name="A" rev="2.8.+" branch="2.8">
<artifact name="A" ext="zip"/>
</dependency>
<dependency org="some" name="B" rev="2.5.6" branch="2.5">
<artifact name="B" ext="zip"/>
</dependency>
<conflict org="some" module="B" rev="2.5.6"/>
</dependencies>
希望它可以帮助别人: - )