代码之家  ›  专栏  ›  技术社区  ›  schlebe

MAVEN如何加载“相同”的依赖项JAR文件?

  •  -1
  • schlebe  · 技术社区  · 6 年前

    我在Maven POM文件中有以下几行

    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
        <version>4.2.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.4.0</version>
    </dependency>
    

    在MAVEN存储库上,在 https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa/4.2.1 据指出 querydsl-api 取决于 slf4j-api 版本 1.6.1 .

    当MAVEN构建应用程序时 slf4j接口 使用了吗?

    加载Java应用程序时,哪个版本的 slf4j接口 使用了吗?

    如果发生了什么 slf4j接口 之前定义的 querydsl-jpa ?

    如果发生了什么 slf4j接口 在中使用的版本 querydsl jpa公司 是否低于应用程序POM文件中定义的版本?

    1 回复  |  直到 6 年前
        1
  •  1
  •   J Fabian Meier    6 年前

    这都是关于 Maven依赖关系中介 .

    Maven从依赖项构建一个树,并将此树合并到一个列表中。在此列表中,每个依赖项只能出现一次。因此,如果树中有几个不同的版本,Maven需要选择一个。

    Maven有一个“最近的依赖关系”标准规则,该规则大致如下:直接依赖关系比一级可传递依赖关系计数更多,二级可传递依赖关系计数更多,依此类推。

    无法定义其他规则,但可以在 <dependencyManagement> 你的pom部分。此版本将覆盖所有可传递定义的版本。

    最困难的部分是找出哪个版本可能是“正确的”,即与所有用例兼容。这不是自动的方法。