覆盖个人常春藤依赖

时间:2012-08-20 14:15:24

标签: log4net ivy dependency-management

应用程序A使用log4net版本1.2.10.0并使用我的CI过程构建,因此存储在我的Ivy Shared文件夹中。 (这里没问题)

应用程序B引用应用程序A,并引用较新版本的log4net,即1.2.11.0。由于CI进程将依赖项解析为应用程序B的二进制文件夹,因此在尝试获取log4net.dll的1.2.10.0和1.2.11.0版本时会发生冲突。

是否有一种方法可以指示Ivy允许它在个人/每个依赖级别覆盖依赖关系以获取更新的版本,并且它不应该在此冲突到来时失败构建?

或者,我是否必须使用版本1.2.10.0的log4net重新构建应用程序A并重新发布它,以便应用程序B不会遇到它的转发依赖性问题?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是传递依赖冲突。应用程序A的一个传递依赖项与应用程序B中的直接依赖项冲突。 与在Maven中一样,使用Application B中的exclude标记:

<dependencies>  
   <dependency org="org.hibernate" name="hibernate-core" rev="3.3.1.GA" conf='..'> 
       <exclude name='jaas' /> 
       <exclude name='jacc' />
   </dependency>
</dependencies>

请参阅Ivy: how do I remove transitive dependencies?