当pom清楚地说1.6.1时,为什么Maven认为我引用了slf4j-simple版本1.5.2?

时间:2013-05-17 17:18:59

标签: maven slf4j

我正在使用以前没有看过的代码进行单元测试。我注意到我收到了一个带有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版本。

2 个答案:

答案 0 :(得分:0)

使用dependency exclusion mechanism专门排除来自jira-connector的1.5.2版本。

答案 1 :(得分:0)

我已经设法完成了这个。我将版本1.6.1的sl4fj-simple和slf4j-api的具体引用添加到了两个有问题的项目中,现在它已经可以了。这应该在一个共同的地方定义,但这将用于这些目的。