首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven解析的版本与传递依赖中的版本不匹配

Maven解析的版本与传递依赖中的版本不匹配
EN

Stack Overflow用户
提问于 2020-06-27 04:17:05
回答 2查看 169关注 0票数 3

我的项目(A)依赖于另一个专有项目(B)。B将spring-jms作为依赖项列出,如下所示(spring.version[4.3.9.RELEASE, 4.3.18.RELEASE]):

代码语言:javascript
复制
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>${spring.version}</version>
    </dependency>

A -> B -> spring-jms

但是,当我在A中运行mvn clean dependency:tree -Dverbose=true时,spring返回5.1.14.RELEASE,这超出了B中指定的范围。在树中,spring-jms -jms列出了两次,两个条目都有5.1.14.RELEASE。

我没有在A中列出spring-jm,我知道我可以将它添加到A中的dependencyManagement中来解决这个问题,但我仍然想知道它为什么要解决那个版本。

下面是树中显示spring-jms的部分。这是它唯一列出的地方。

代码语言:javascript
复制
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ project A ---
[INFO] project A
[INFO] +- project B
[INFO] |  +- (org.springframework:spring-context:jar:5.1.14.RELEASE:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-jms:jar:5.1.14.RELEASE:compile
[INFO] |  |  \- (org.springframework:spring-messaging:jar:5.1.14.RELEASE:compile - version managed from 5.1.11.RELEASE; omitted for duplicate)
[INFO] |  +- org.springframework:spring-aop:jar:5.1.14.RELEASE:compile
[INFO] |  +- org.springframework:spring-oxm:jar:5.1.14.RELEASE:compile
[INFO] |  +- org.springframework:spring-expression:jar:5.1.14.RELEASE:compile
[INFO] |  +- (org.apache.commons:commons-collections4:jar:4.3:compile - omitted for duplicate)
[INFO] |  +- org.bouncycastle:bcprov-jdk15on:jar:1.56:compile
[INFO] |  +- org.springframework.integration:spring-integration-jms:jar:5.1.9.RELEASE:compile
[INFO] |  |  \- (org.springframework:spring-jms:jar:5.1.14.RELEASE:compile - version managed from 5.1.11.RELEASE; omitted for duplicate)
EN

回答 2

Stack Overflow用户

发布于 2020-06-28 12:42:01

如果你的一个依赖项使用的是5.1.14.RELEASE,那么就会发生这种情况。如果你使用的是IntelliJ,你可以使用右边的maven部分来检查你的依赖项,你可以在那里找到答案。然后,您可以使用排除来删除该依赖项。

代码语言:javascript
复制
<dependency>
            <groupId>com.smaple.dependency</groupId>
            <artifactId>dependency</artifactId>
            <version>version</version>
            <exclusions>
                <exclusion>
                    <groupId>springjms</groupId>
                    ...
                </exclusion>
            </exclusions>
</dependency>

票数 0
EN

Stack Overflow用户

发布于 2020-06-28 12:56:36

运行mvn dependency:tree命令并尝试查找spring-jms的所有外观。

当maven解析依赖关系时,如果存在不同版本的依赖关系,它将在依赖关系树中采用最接近根的深度。

因此,如果您的项目具有以下树:

代码语言:javascript
复制
YOUR_PROJECT
|___ <PROJECT_B>
|   |__spring-jms-v1 // depth = 2
|___spring-jms-v2    // depth = 1

Maven将采用spring-jms-v2,因为它更接近根

在任何情况下,mvn dependency:tree都会显示“根”的版本和完整路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62602235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档