我正在使用Ivy来管理我的依赖项,这让我遇到了easymock的问题
我的ivy.xml文件包含以下内容:
<dependency org="easymock" name="easymock" rev="2.5.+" conf="compile,test -> default" />
然后我跟随其他库依赖项,希望如果其他一些库使用另一个版本的easymock,那么至少我的库得到正确的。
但是在我解决之后,在eclipse中我可以看到有2个版本的easymock(1.2和2.5),然后1.2首先列出。
当我运行单元测试时,我在org.easymock.internal.RecordState的contstructor上得到了一个java.lang.NoSuchMethodError,它接受了org.easymock.internal.IMocksBehavior。
这表明我正在使用旧版本的EasyMock。
任何想法如何解决这个问题?
答案 0 :(得分:3)
生成常春藤依赖关系报告,以确切了解常春藤正在使用的版本,对于每种配置:
<ivy:resolve/>
<ivy:report todir='${ivy.reports}' graph='false' xml='false'/>
通常当常春藤遇到同一个库的两个版本时,它会“逐出”旧版本。
要修复错误解决冲突的问题,我建议您阅读doco
Ivy的冲突算法在过去一直对我有用,但我必须承认,我从未完全理解传递分析的一些复杂性。以下Maven文章值得一读:
http://guntherpopp.blogspot.com/2011/02/understanding-maven-dependency.html
答案 1 :(得分:1)
我在ibiblio镜子中看到的最新easymock是rev 2.0。这意味着,找不到2.5并使用旧版本。检查解析器设置和修订。 它还有助于偶尔清理缓存(常春藤:cleancache),因此常春藤被迫搜索repos进行修订。