我有一个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:compile
,org.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_
答案 0 :(得分:0)
确实,接近规则适用,以便最接近当前项目的声明获胜。您可能希望删除<optional>false</optional>
元素并查看它是否有所作为。