我们有一个错误,我们的记录器停止做任何事情。最后,我们将其追溯到外部依赖,例如:
<dependency>
<groupId>com.bob</groupId>
<artifactId>alice</artifactId>
<version>1.2.3</version>
</dependency>
它拥有自己的slf4j实现。我已经改变了我们的pom,所以首先列出了这个依赖项,这就是触发bug的原因。将依赖项移回到最后列出的问题修复了问题(以便使用通常的log4j实现)。
这似乎是一个非常脆弱的修复。 &#34;正确&#34;修复似乎是让maven程序集插件排除从alice.jar文件导入org.slf4j包中的任何文件。我们尝试在自定义程序集xml文件中添加一些内容,例如:
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>com.bob:alice:org/slf4j/*</exclude>
然而,这并没有奏效。我能做的最好的是:
<exclude>org/slf4j/*</exclude>
但这不包括该软件包的所有副本,这显然会破坏所有内容。
进行此排除的正确方法是什么?
答案 0 :(得分:0)
试试这个:
<dependency>
<groupId>com.bob</groupId>
<artifactId>alice</artifactId>
<version>1.2.3</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
然后像这样添加依赖项slf4j
:(您可以修改slf4j
的版本)
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>