依赖项版本冲突->不同的slf4j版本,但不能排除错误的版本

时间:2018-08-07 17:38:45

标签: java hibernate maven dependencies slf4j

我有几乎与此处相同的问题:

Maven + SLF4J: Version conflict when using two different dependencies that require two different SLF4J versions

(但不幸的是,所有答案都对我们的案例没有帮助)

案例:

我需要包含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中排除,因为它是强制性的,没有它我就无法使用。

是否有机会检查依赖项的来源或如何排除较旧的版本(以防与新版本兼容)?

1 个答案:

答案 0 :(得分:0)

重要规则::在本地项目P中声明对工件A的依赖,例如版本v,将覆盖P对A的依赖所进行的其他声明。您的项目将导入A版本v ,无论您的其他依赖项为A声明了哪个版本。

根据您的情况,明确声明您想要的 slf4j-api依赖项以及所需的绑定。

另请参见Introduction to the Dependency Mechanism,其中指出:

  

依赖关系中介-确定哪个版本的依赖关系   遇到工件的多个版本时将使用。   当前,Maven 2.0仅支持使用“最近定义”   这意味着它将使用最接近的依赖项的版本   您的项目在依赖树中。您可以随时保证   版本,方法是在项目的POM中明确声明