当我尝试在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服务器上实际可用的版本号更低的版本号吗?
答案 0 :(得分:4)
我发现这个问题有两种可能的解决方案:
第一个是为特定版本的依赖项指定确切的版本要求或“硬性要求”,如下所示:
<version>[1.5]</version>
而不是:
<version>1.5</version>
第二个是使用mvn dependency:tree
Maven命令来确切地查看正在引入的依赖项以及在什么层次结构中。在我的情况下,这解决了我的问题,当我注意到一个依赖实际上拉入另一个依赖的旧版本,作为一个子依赖。尽管子依赖项是在POM中的其他地方指定的,但是Maven使用了作为子依赖项引入的旧版本。我知道这听起来很混乱,但无论哪种方式,mvn dependency:tree
都应该显示是否在不知情的情况下或在未指定的版本中提取依赖关系。