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



我正在做一个我以前没有看过的单元测试代码。我注意到我收到了一个带有SLF调用的NoSuchMethodError。这显然是由于依赖树中SLF片段的不同版本造成的。我在不同的地方看到了1.6.1和1.5.2。我将其追溯到一个peer pom,该pom要么引用1.5.2版本,要么没有(1.5.2引用在插件依赖项中,而"none"在主依赖项列表中)。我将两个引用都更改为1.6.1。我为该模块运行了"mvn install"。我查看了我的~/中生成的POM。M2/repository树,它显示为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

它仍然认为它引用的是1.5.2,即使我在"jira-connector"pom中更改了两个引用为1.6.1。

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

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

我已经熬过去了。我将sl4fj-simple和版本为1.6.1的slf4j-api的特定引用添加到这两个项目中,现在就可以了。这应该在一个通用的地方定义,但这将满足这些目的。

相关内容

最新更新