Maven选错了slf4j版本

时间:2013-04-02 22:36:23

标签: maven slf4j

我有一个maven项目,其直接依赖如下:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
    <scope>compile</scope>
    <optional>false</optional>
</dependency>

但是尽管如此,mvn dependency:tree显示slf4j-api版本被选为1.6.2,并且直接依赖于我的项目!

我的项目中还有其他依赖项可能取决于slf4j的其他某个版本。但我的理解是,最接近树根的指定版本被选中。

slf4j相关内容的其他依赖项为org.slf4j:jul-to-slf4j:jar:1.7.5:compileorg.slf4j:log4j-over-slf4j:jar:1.7.5:compile(直接依赖项)和org.slf4j:jcl-over-slf4j:jar:1.7.3:runtime(传递依赖项)

我正在此maven项目中构建war,并且包含slf4j的jar位于归档中的1.6.2。我不知道该怎么做以确保我获得jar版本1.7.5而不是1.6.2

更新:我正在使用maven 3.0.4

更新2:根据要求,添加了pom和调试日志。由于文件很大,我已将其添加到dropbox公共文件夹:https://www.dropbox.com/sh/w1rtgvxvnt4jf18/lbiMIgwWD_

1 个答案:

答案 0 :(得分:0)

确实,接近规则适用,以便最接近当前项目的声明获胜。您可能希望删除<optional>false</optional>元素并查看它是否有所作为。