-1

我有一个 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的 jar在存档中。我不知道该怎么做才能确保我得到 jar 版本而不是.slf4j1.6.21.7.51.6.2

更新:我正在使用 maven 3.0.4

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

4

1 回答 1

0

事实上,邻近规则适用,因此最接近当前项目的声明获胜。您可能想删除该<optional>false</optional>元素并查看它是否有所作为。

于 2013-04-03T12:32:48.813 回答