0

我正在用我以前没有看过的代码进行单元测试。我注意到我通过 SLF 调用得到了 NoSuchMethodError。这显然是由于依赖关系树中 SLF 片段的不同版本。我在各个地方都看到了 1.6.1 和 1.5.2。我将其追溯到一个引用版本 1.5.2 或没有引用的对等 pom(1.5.2 引用位于插件依赖项中,而“无”位于主依赖项列表中)。我将两个引用都更改为 1.6.1。我为那个模块运行了“mvn install”。我在 ~/.m2/repository 树中查看了生成的 POM,它都显示为 1.6.1。然后我运行了一个“mvn dependency:tree”,以下摘录来自:

[INFO] +- com.somepath.bundle:com.somepath.jira-connector:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- org.apache.axis:axis:jar:1.4:compile
[INFO] |  +- org.apache.axis:axis-jaxrpc:jar:1.4:compile
[INFO] |  +- org.apache.axis:axis-saaj:jar:1.4:compile
[INFO] |  +- commons-discovery:commons-discovery:jar:0.4:compile
[INFO] |  +- wsdl4j:wsdl4j:jar:1.6.2:compile
[INFO] |  +- org.slf4j:slf4j-simple:jar:1.5.2:compile

它仍然认为它引用了 1.5.2,即使我将“jira-connector”pom 中的两个引用都更改为 1.6.1。

当我从命令行运行“mvn test”时,结果与此一致,因为 SLF 抱怨它发现了多个绑定,其中一个是 1.5.2 版本。

4

2 回答 2

0

使用依赖排除机制专门排除来自 jira-connector 的 1.5.2 版本。

于 2013-05-17T17:20:57.173 回答
0

我设法度过了这个难关。我在有问题的两个项目中添加了对 1.6.1 版的 sl4fj-simple 和 slf4j-api 的特定引用,现在可以了。这应该在一个共同的地方定义,但这将用于这些目的。

于 2013-05-17T21:31:12.143 回答