2

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

[INFO] Checking for transitive/resolved version mismatches.
[INFO] com.company.etc:artifact-name:
[INFO]     required: 1.5
[INFO]     resolved: 1.3

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

我真的很难过。有什么我忽略的可能导致 Maven解析的版本号低于 repo 服务器上实际可用的版本号吗?

4

1 回答 1

6

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

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

<version>[1.5]</version>

代替:

<version>1.5</version>

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

于 2013-07-10T17:55:20.087 回答