【发布时间】:2015-11-20 19:10:59
【问题描述】:
在我的 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 目录时,我发现了以下 jars。
logback-access-1.0.13.jar
logback-classic-1.0.13.jar
logback-core-1.0.13.jar
为什么 logback 会出现在我的 lib 目录中?正如我所听说的,运行时依赖项不应进入 libs 目录。
我应该如何解决这个问题?该库是在我公司内部开发的,如果需要,我可以要求库开发人员删除 logback 运行时依赖项。
【问题讨论】:
标签: java maven logging dependencies slf4j