我正在使用以前没有看过的代码进行单元测试。我注意到我收到了一个带有SLF调用的NoSuchMethodError。这显然是由于依赖树中SLF片段的不同版本。我在不同的地方看到了1.6.1和1.5.2。我将其追溯到一个引用版本1.5.2或者没有引用的对等pom(1.5.2引用是在插件依赖中,而“none”在主依赖列表中)。我改变了对1.6.1的两个引用。我为该模块运行了“mvn install”。我查看了〜/ .m2 / repository树中生成的POM,它显示为1.6.1。然后我运行了一个“mvn依赖:树”,以下摘录来自:
[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
即使我将“jira-connector”pom中的两个引用更改为1.6.1,它仍然认为它引用了1.5.2。
当我从命令行运行“mvn test”时,结果与此一致,因为SLF抱怨它发现了多个绑定,其中一个是1.5.2版本。
答案 0 :(得分:0)
使用dependency exclusion mechanism专门排除来自jira-connector的1.5.2版本。
答案 1 :(得分:0)
我已经设法完成了这个。我将版本1.6.1的sl4fj-simple和slf4j-api的具体引用添加到了两个有问题的项目中,现在它已经可以了。这应该在一个共同的地方定义,但这将用于这些目的。