首页 > 解决方案 > 使用 maven 解决正确库的问题:版本管理自

问题描述

我在我的项目中使用 Google Guava。

我在下游库之一中明确指定了此版本的库:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>19.0</version>
</dependency>

但是当我在项目中使用我的lib时,它带来了错误的Guava版本:

[INFO] |  +- com.google.guava:guava:jar:28.2-android:compile
[INFO] |  |  +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] |  |  +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] |  |  +- com.google.code.findbugs:jsr305:jar:3.0.2:compile

我以详细模式运行 maven dependency:tree,我看到:

[DEBUG]       com.google.guava:guava:jar:28.2-android:compile (version managed from 19.0)
[DEBUG]          com.google.guava:failureaccess:jar:1.0.1:compile
[DEBUG]          com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[DEBUG]          com.google.code.findbugs:jsr305:jar:3.0.2:compile
[DEBUG]          org.checkerframework:checker-compat-qual:jar:2.5.5:compile
[DEBUG]          com.google.errorprone:error_prone_annotations:jar:2.3.4:compile

是什么version managed from意思?我的项目版本中没有任何地方28.2-android。它是如何解决的?

标签: maven

解决方案


表达“版本管理自”意味着版本号设置在<dependencyManagement>.

这通常在父 POM 中完成。它可以直接指定,也可以通过加载<scope>import</scope>.


推荐阅读