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

Java Maven依赖项版本不匹配问题-从repo解决过时的依赖项版本,java,eclipse,maven,maven-metadata,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 我的POM文件正在请求该工件的1.5版本,因此该部分是正确的。但是在列出的存储库中,版本1.3、1.4和1.5都可用,根目录中也

当我尝试在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服务器上实际可用的版本号?

我发现了两种可能的解决方案:

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

<version>[1.5]</version>
[1.5]
而不是:

<version>1.5</version>
1.5

第二个是使用
mvn-dependency:tree
Maven命令来查看要拉入的依赖项以及层次结构。在我的例子中,当我注意到一个依赖项实际上作为子依赖项引入了另一个依赖项的旧版本时,这就解决了我的问题。尽管子依赖项是在POM的其他地方单独指定的,但Maven使用了作为子依赖项引入的旧版本。我知道这听起来很混乱,但无论如何,
mvn dependency:tree
应该显示是否在不知不觉中拉入了依赖项,或者是在未指定的版本中拉入了依赖项。

这不是生成失败消息,而是信息消息。这并没有让你的构建失败。此外,在某些情况下,选择较低版本是标准的maven行为-它使用closes first匹配,如果最接近,则选择较低版本。你能指定你的pom吗?我想我应该指定-如果版本不匹配,我将其设置为生成失败。是否有必要让它选择更高的版本?是的,在pom文件中的正确位置有显式版本。但是您需要提供pom的详细信息,以便给出更准确的说明。此外,
mvn dependency:tree
output将非常有用mvn dependency:tree帮助我解决了这个问题,谢谢!