如何在保留SLF4J的同时从库的依赖项中删除logback?

时间:2015-08-26 16:21:18

标签: java maven logging dependencies slf4j

在我的Vaadin项目中,我依赖于某个库。该库使用slf4j进行日志记录。在库pom中,logback slf4j绑定被添加为运行时依赖项。

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
        <scope>runtime</scope>
    </dependency>

在我的应用程序中,我直接使用log4j进行日志记录。我希望库中添加的日志包含在我的log4j日志中。

为此,我在我的pom中添加了以下内容以包含slf4j log4j绑定

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>

然而,slf4j抱怨它发现了多个绑定。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/program_files/apache-tomcat-8.0.24/temp/0-ROOT/WEB-INF/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/program_files/apache-tomcat-8.0.24/temp/0-ROOT/WEB-INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]

我检查了我的应用程序的依赖树,它依赖于logback。 (以下是对logback的唯一依赖)

[INFO] |  +- com.mycompany.mylib:libname:jar:1.1.0-SNAPSHOT:compile
[INFO] |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.5:runtime
[INFO] |  |  +- ch.qos.logback:logback-classic:jar:1.0.13:runtime
[INFO] |  |  |  \- ch.qos.logback:logback-core:jar:1.0.13:runtime
[INFO] |  |  +- ch.qos.logback:logback-access:jar:1.0.13:runtime

另外,当我在war文件中的WEB-INF\lib目录中查看时,我发现了以下的jar。

logback-access-1.0.13.jar
logback-classic-1.0.13.jar
logback-core-1.0.13.jar

为什么logback最终出现在我的lib目录中?正如我所听到的,运行时依赖项不应该进入libs目录。

我该如何解决这个问题?该库是在我公司内部开发的,如果需要,我可以要求库开发人员删除logback运行时依赖项。

0 个答案:

没有答案