使用 slfj-log4j12 时如何正确排除 slf4j-jdk14?

Posted

技术标签:

【中文标题】使用 slfj-log4j12 时如何正确排除 slf4j-jdk14?【英文标题】:How to correctly exclude slf4j-jdk14 when using slfj-log4j12? 【发布时间】:2013-04-01 17:07:49 【问题描述】:

我在我的项目中使用 Ivy 进行依赖管理。我想使用 SLF4J 进行日志记录。我加了

<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" />

它会同时下载 slf4j-log4j12slf4j-jdk14,这会导致绑定冲突。我试图通过使用排除它

<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5">
  <exclude module="slf4j-jdk14" />
</dependency>

但是模块仍然被下载。我已将 exclude 标签直接放在 dependencies 标签下以排除此模块。为什么?

【问题讨论】:

slf4j-jdk14 不是 slf4j-log4j12 的依赖项。我怀疑其他一些依赖项正在引入 slf4j-jdk14。 我也有这个想法。但不确定。谢谢:) 您是否尝试过运行 'ant report' 来获取 Ivy 报告并查看“依赖项概述”部分下的什么导致 slf4j-jdk14 被下载?它应该告诉你依赖是什么。 【参考方案1】:

解决这个问题的最简单方法是创建一个全局排除:

<dependencies>
   <dependency ..
   <dependency ..
   <dependency ..

   <exclude org="org.slf4j" module="slf4j-jdk14"/>
</dependencies>

要发现传递依赖的来源,我建议始终生成常春藤报告:

<target name="resolve" description="Resolve dependencies using ivy">
    <ivy:resolve/>
    <ivy:report todir="$build.dir/ivy-report" graph="false"/>
</target>

【讨论】:

谢谢。不幸的是,我正在为 Eclipse 使用 IvyIDE 插件。我不知道如何从中生成报告。你有什么想法吗?

以上是关于使用 slfj-log4j12 时如何正确排除 slf4j-jdk14?的主要内容,如果未能解决你的问题,请参考以下文章

排除spring-boot-starter-web的Logback依赖关系会阻止log4j系统正确初始化

日志组件

在简单的 Neo4j 查询中排除标签名称

如何正确初始化 log4j?

当特定的列组合确定其重复性时,如何排除sql中的数据?

如何在gradle中排除来自spring boot的依赖项