1

我正在使用 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 的构造函数上得到一个 java.lang.NoSuchMethodError,它采用 org.easymock.internal.IMocksBehavior。

这表明我正在使用旧版本的 EasyMock。

有什么想法可以解决这个问题吗?

4

2 回答 2

3

为每个配置生成一个 ivy 依赖报告以准确查看 ivy 使用的版本:

  <ivy:resolve/>
  <ivy:report todir='${ivy.reports}' graph='false' xml='false'/>

通常,当 ivy 遇到同一个库的两个版本时,它会“驱逐”旧版本。

要解决不正确的冲突解决问题,我建议阅读文档

更新

Ivy 的冲突算法过去一直对我很有效,但我必须承认我从未完全理解传递分析的某些复杂性。以下 Maven 文章值得一读:

http://guntherpopp.blogspot.com/2011/02/understanding-maven-dependency.html

于 2011-02-15T19:01:40.293 回答
1

我在 ibiblio 镜像中看到的最新的 easymock 是 rev 2.0。这意味着找不到 2.5 并且使用的是旧版本。检查您的解析器设置和修订。它还有助于不时清理缓存(ivy:cleancache),因此 ivy 被迫在 repos 中搜索修订。

于 2011-02-24T09:57:19.893 回答