Maven 可传递依赖项拉入的版本低于POM中声明的版本

Maven 可传递依赖项拉入的版本低于POM中声明的版本,maven,spring-boot,intellij-idea,spring-restdocs,Maven,Spring Boot,Intellij Idea,Spring Restdocs,我正在使用IntelliJ开发的spring Boot应用程序中使用spring RESTMVC的1.2.2版 看看它的POM,它声明了SpringRestDocs核心的以下依赖项: 但是由于某种原因,在开发过程中提供给我的spring restdocs core编译版本与此不匹配,使我一直停留在版本1.1.2上 我已经更新了我的存储库,刷新、重建、干净安装,你可以说,所有我能找到的关于如何“刷新”Maven项目状态的信息,都没有改变这一点。有什么想法吗?spring.io上有一篇博文很好

我正在使用IntelliJ开发的spring Boot应用程序中使用spring RESTMVC的1.2.2版

看看它的POM,它声明了SpringRestDocs核心的以下依赖项:

但是由于某种原因,在开发过程中提供给我的
spring restdocs core
编译版本与此不匹配,使我一直停留在版本1.1.2上

我已经更新了我的存储库,刷新、重建、干净安装,你可以说,所有我能找到的关于如何“刷新”Maven项目状态的信息,都没有改变这一点。有什么想法吗?

spring.io上有一篇博文很好地抓住了这些问题,并提供了五种可能的解决方案,从使用Maven做一些XML仰卧起坐到将构建迁移到Gradle(从而完全避开XML仰卧起坐)。看起来这篇文章中的“选项2”对你来说可能是最简单的,那就是在你的项目中:

<properties>
    <spring-restdocs.version>1.2.2.RELEASE</spring-restdocs.version>
</properties>

1.2.2.1发布

注意,这确实假设您使用的是SpringBootStarter父级,这似乎是一个合理的假设。我相信这也会得到mockmvc依赖项,因此可以删除该依赖项的现有声明。这可能也很有用。希望有帮助

运行mvn dependency:tree,找出哪个其他依赖项具有此依赖项。检查依赖项树,其他人添加了
spring restdocs core
,可能有人(更接近您的项目)覆盖了该版本。检查您的
依赖项管理
是否在那里被覆盖。如果您有一个Maven父级(例如Spring引导父级),请检查其中定义的版本。这些都可以覆盖依赖项版本。如果您有
spring boot starter父项
依赖项,则不应尝试覆盖托管版本(因此在添加依赖项时不要添加版本),否则依赖项版本可能会不同。如果要手动覆盖,还必须定义
spring restdocs core
。感谢Andy捕获并修复了我的输入错误!