我有几乎与此处相同的问题:
(但不幸的是,所有答案都对我们的案例没有帮助)
案例:
我需要包含Firebase依赖项
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>5.11.0</version>
</dependency>
取决于slf4j 1.7.25版。
此后,我们实施了一些集成测试(使用spring和junit),现在我们正面临冲突
SLF4J:slf4j绑定请求的1.5.6版本与[1.6,1.7]不兼容
SLF4J:有关更多详细信息,请参见http://www.slf4j.org/codes.html#version_mismatch。
但是当我运行“ mvndependency:tree”时,我看不到对slf4j的任何其他依赖。因此,这显然是项目的“外部”。
我也不能只将slf4j从firebase中排除,因为它是强制性的,没有它我就无法使用。
是否有机会检查依赖项的来源或如何排除较旧的版本(以防与新版本兼容)?
答案 0 :(得分:0)
重要规则::在本地项目P中声明对工件A的依赖,例如版本v,将覆盖P对A的依赖所进行的其他声明。您的项目将导入A版本v ,无论您的其他依赖项为A声明了哪个版本。
根据您的情况,明确声明您想要的 slf4j-api依赖项以及所需的绑定。
另请参见Introduction to the Dependency Mechanism,其中指出:
依赖关系中介-确定哪个版本的依赖关系 遇到工件的多个版本时将使用。 当前,Maven 2.0仅支持使用“最近定义” 这意味着它将使用最接近的依赖项的版本 您的项目在依赖树中。您可以随时保证 版本,方法是在项目的POM中明确声明