【问题标题】:How do I read a Maven dependency tree如何读取 Maven 依赖树
【发布时间】:2013-12-09 23:01:33
【问题描述】:

我有 servlet-api 2.5 版作为 pom.xml 中提供的范围。这是我项目的依赖项的一部分:树输出。 “从 2.3 管理的版本;从编译管理的范围”是什么意思?

[INFO] +- commons-logging:commons-logging:jar:1.1:compile
[INFO] |  \- javax.servlet:servlet-api:jar:2.5:provided (version managed from 2.3; scope managed from compile)

这是否意味着在我的类路径上对 2.3 版存在一些传递依赖?我的 WAR 文件根本没有 servlet-api jar,但我使用的是旧版本的 Spring 2.5.4。我怀疑 Spring 框架依赖于 servlet-api 2.3。

【问题讨论】:

    标签: java maven


    【解决方案1】:

    该消息基本上意味着 servlet-api 的 version 将传递为 2.3(因此基本上在 commons-logging 的 pom 中,他们将 servlet-api 定义为 2.3 版),但在您的项目中专门要求使用 2.5 版,所以这就是使用的。

    范围也是如此。在 commons-logging 的 pom 中,它是用作用域 compile 定义的,但你已经用作用域 provided 定义了它,所以这也是使用的作用域。

    【讨论】:

    • 除了在我的情况下 (spring-data-mongodb) 我找不到覆盖托管版本的位置。
    • @OrangeDog 我也遇到过类似的问题。我发现旧版本的 httpclient 来自 spring-boot-starter-parent pom。
    • 请注意,它们也可以在“父级”pom 中被覆盖,因此请务必仔细检查...
    • 有没有办法找出版本被覆盖的位置?它不在我父母身上
    【解决方案2】:

    这意味着您的项目已经覆盖了其他依赖项中的versionscope

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2014-04-16
      • 2014-05-29
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多