Maven 依赖版本不匹配问题 - 从 repo 解决过时的依赖版本

Mat*_*kas 2 java eclipse maven maven-metadata

当我尝试在 Eclipse 中构建我的 Maven 项目时,我收到此构建失败消息:

[INFO] Checking for transitive/resolved version mismatches.
[INFO] com.company.etc:artifact-name:
[INFO]     required: 1.5
[INFO]     resolved: 1.3
Run Code Online (Sandbox Code Playgroud)

我的 POM 文件要求此工件的 1.5 版,因此该部分是正确的。但是在列出的存储库中,版本 1.3、1.4 和 1.5 都可用,根目录中也有正确的 maven-metadata.xml 文件。简单地将我的 POM 文件要求更改为旧版本不是一种选择,因为我需要最新版本的工件中的功能。

我真的被这里难住了。有什么我忽略的可能会导致 Maven解析的版本号低于存储库服务器上实际可用的版本号

Mat*_*kas 6

针对这个问题,我找到了两种可能的解决方案:

第一个是为依赖项的特定版本指定确切的版本要求,或“硬要求”,如下所示:

<version>[1.5]</version>
Run Code Online (Sandbox Code Playgroud)

代替:

<version>1.5</version>
Run Code Online (Sandbox Code Playgroud)

第二个是使用mvn dependency:treeMaven 命令来准确查看正在拉入哪些依赖项,以及处于什么层次结构中。就我而言,当我注意到一个依赖项实际上将另一个依赖项的旧版本作为子依赖项引入时,这解决了我的问题。尽管子依赖是在 POM 的其他地方单独指定的,但 Maven 使用了作为子依赖引入的旧版本。我知道这听起来令人困惑,但无论哪种方式,mvn dependency:tree都应该显示是否在不知不觉中或在未指定的版本中引入了依赖项。