应用程序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不会遇到它的转发依赖性问题?
答案 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>