Maven:如何停止使用旧版本的依赖?

Posted

技术标签:

【中文标题】Maven:如何停止使用旧版本的依赖?【英文标题】:Maven: How to stop using old version of dependency? 【发布时间】:2020-10-24 00:10:55 【问题描述】:

在我的Java Maven Project 中,我可以看到一个依赖项(apache httpcomponents)的以下 2 个版本:

如何确保在我的项目中只使用最新版本(4.5.2)?

我什至在我的 pom.xml 文件中的任何位置都找不到声明的 4.2.1 来删除它。

【问题讨论】:

你清理并构建了项目吗? 旧版本可能会被另一个依赖项传递进来。 Inspect the dependency tree 看看是不是这样。如果是,你可以试试using an exclusion。 【参考方案1】:

一个给定的项目不应该有两个版本的相同依赖项。

因此,要么您的 IDE 在这里显示错误,要么您在构建之前没有 mvn clean,因此新旧依赖项混合在一起。

Maven 将始终只采用 一个 版本。不幸的是,您不能告诉 Maven 采用最新的,但它总是会采用依赖关系树中最近的。

如果要为特定依赖项设置版本,请使用<dependencyManagement>

【讨论】:

【参考方案2】:

根据您使用 IntelliJ 的屏幕截图。我不得不同意这种观点有点令人困惑。在Project-选项卡中,您将External Libraries 包含此选项卡中所有 项目的所有 依赖项。因此,依赖项可能会出现在不同的版本中。 在Maven-tab(右侧)中,您可以看到每个项目的依赖关系树。首先,您将看到直接依赖项,您可以将其展开以查看下一级依赖项。 AFAIK 在 IntelliJ 中没有可用的完整依赖项列表,就像在 Eclipse 中看到的那样。

【讨论】:

【参考方案3】:

这是 IDE 的视图,它显示了您项目中所有使用或使用的库。一旦将 pom.xml 指向新版本并重建项目,将使用新版本。 在 Intellj 中,您可以选择:Menu -> File -> Invalidate Caches/Restart 来更新它。如果这没有帮助,请从现有的 pom.xml 文件开始新项目

【讨论】:

以上是关于Maven:如何停止使用旧版本的依赖?的主要内容,如果未能解决你的问题,请参考以下文章

如何从maven存储库中清除旧的依赖项?

如何找到特定版本的maven依赖项的最低JDK版本?

如何从 Maven 存储库中清除旧的依赖项?

如何阻止maven-release-plugin使用旧版本的maven-gpg-plugin

Maven 依赖版本

maven发布jar固定版本缓存问题