【问题标题】:Dependency not showing in Dependency Tree but is included in WAR依赖关系未显示在依赖关系树中,但包含在 WAR 中
【发布时间】:2016-03-30 16:54:57
【问题描述】:

我目前在登录使用 Maven 构建的 WAR 文件时遇到了一些问题。当我尝试访问 WAR 中的 servlet 时,我从 SLF4J 收到一个由“delegation loop”引起的错误。

要解决此问题,我知道我需要删除其中一个库(在我的情况下为 slf4j-log4j12),我应该能够通过在 POM 中排除它来做到这一点(我没有明确包括任何日志记录来自slf4j-api)。

但是,slf4j-log4j12 没有显示在依赖关系树中 - 无论是通过 Eclipse 中的 Dependency Hierarchy 选项卡还是通过 dependency:tree 目标。但是,当我查看 WAR 文件时,slf4j-log4j12.jar 存在于 WEB-INF/lib 目录中。

任何想法为什么依赖项没有出现在依赖项树中?有没有其他方法可以将 JAR 包含在构建中?

【问题讨论】:

  • 你更新你的maven项目了吗?在查看 Inside the war 之前,您是否也刷新了项目?
  • 是的,项目是最新的,我已经从项目的最新版本重建了好几次 WAR。
  • 'mvn dependency:tree' 命令是你的朋友。
  • @Ceki,正如你从上面看到的那样,我尝试过,据我所知,我所拥有的所有依赖项都不包括 slf4j-log4j12.jar,但它仍然出现在编译的 WAR 中。
  • @JamesBaker 'mvn dependency:tree' 比 Eclipse 提供的依赖树更可靠。对于所有涉及依赖之谜的问题,'mvn dependency:tree' 是要走的路。

标签: maven dependencies war slf4j


【解决方案1】:

我在我的项目中使用了 log4jslf4j 的旧版本,并且没有任何问题。 尝试像这样修改pom.xml 中的 jar:如果可行,您可以根据自己的选择修改版本:

对于 slf4j

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.5.6</version>
</dependency>

对于 log4j

 <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.9</version>
 </dependency>

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 2016-12-24
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多