Maven依赖调解异常:同一依赖解析出多版本问题咨询
核心原因:依赖管理版本覆盖 + 重复依赖自动去重
这个现象完全符合Maven的依赖机制,拆解来看:
version managed from {{version}}
你的项目(或继承的父POM)的<dependencyManagement>节点中,已经明确指定了jackson-datatype-jsr310的版本为2.13.2。标注里的{{version}}是该依赖在子模块(比如spring-boot-starter-json、radar-client等)原本声明的版本。Maven会优先使用<dependencyManagement>中定义的版本,所以这里显示"从原版本被管理为2.13.2"。omitted for duplicate
依赖树里abc.def.commons:def-commons下的jackson-datatype-jsr310:2.13.2是实际被引入到项目中的依赖(无括号包裹,代表生效)。其他路径下的同版本依赖,因为和已引入的jar完全一致,Maven会自动省略重复的依赖,避免打包时出现多个相同版本的jar包。
和依赖调解规则的关系
你提到的Maven依赖调解规则,优先级低于<dependencyManagement>的版本锁定。也就是说,哪怕依赖调解原本会选择其他版本,只要<dependencyManagement>里有明确配置,就会优先使用这个配置的版本。而最终项目里确实只引入了单一版本的jackson-datatype-jsr310,完全符合依赖调解要统一版本的目标,那些标注只是在告诉你Maven做了哪些版本替换和重复依赖剔除的操作。
内容的提问来源于stack exchange,提问作者Abilash G

