【发布时间】:2016-04-08 09:38:32
【问题描述】:
我们有一个错误,导致我们的记录器停止执行任何操作。最后,我们追踪到了一个外部依赖,比如:
<dependency>
<groupId>com.bob</groupId>
<artifactId>alice</artifactId>
<version>1.2.3</version>
</dependency>
它有自己的 slf4j 实现。我已经更改了我们的 pom,所以首先列出了这个依赖项,这就是触发错误的原因。将依赖项移回最后列出的位置解决了问题(因此使用了通常的 log4j 实现)。
这似乎是一个非常脆弱的修复。 “正确”的修复似乎是让 maven 程序集插件排除从 alice.jar 文件导入 org.slf4j 包中的任何文件。我们尝试在我们的自定义程序集 xml 文件中添加一些内容,例如:
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>com.bob:alice:org/slf4j/*</exclude>
但是,这不起作用。我能做的最好的事情是:
<exclude>org/slf4j/*</exclude>
但这不包括该软件包的所有个副本,这显然会破坏一切。
执行此排除的正确方法是什么?
【问题讨论】: