我有一个使用 Spring Boot 部署的 gradle java 项目。当我使用我的 jar 文件启动 Spring-Boot 时,我收到以下警告:
SLF4J:类路径包含多个 SLF4J 绑定
SLF4J:在 [apache-tomcat-8.0.23/lib/activemq-all-5.11.1jar!/org/slf4j/impl/StaticLoggerBinder.class 中找到绑定
SLF4J:在 [apache-tomcat-8.0.23/webapps/ProjectName/WEB-INF/lib/activemq-all-5.11.1jar!/org/slf4j/impl/StaticLoggerBinder.class 中找到绑定
SLF4J:实际绑定的类型为 [org.slf4j.impl.Log4jLoggerFactory]
为了消除这个绑定警告,我进入了我的 gradle 打包器项目,该项目为 Spring-Boot 创建了 jar 文件,并做了一个dependencyInsight来跟踪 activemq-all jar 并替换为这里解释的底层 jar 。
我在我的项目中找到了这个 activemq-all jar 的一个实例:
:dependencyInsight
org.apache.activemq-all:5.9.1
/--- com.company.projectName:projectTitle:1.1.0
/--- compile
我进入了这个项目。用上面链接中显示的相应 jar 替换了 activemq-all 依赖项(因此 slf4j-log4j12 不包含在 uber jar 中)。再次构建项目,使用我创建的新 jar 更新我的缓存,然后重新运行创建我的 war 文件的打包程序项目。但是,activemq-all jar 仍然存在。我可以从我的缓存中本地删除它,但在 gradle 刷新时它会被替换。有没有一种特殊的方法可以从我的项目中删除这种传递依赖,以便我可以解决这个绑定问题,或者我在从我的项目中删除依赖时有什么误解?我觉得dependencyInsight 没有正确映射我的activemq-all jar 的依赖项。
如果您需要更多信息,请告诉我。