Maven多模块项目依赖管理:如何解决版本冲突和依赖查找问题?

两个模块涉及的依赖引入问题

问题 1:api 模块发布后,b 项目如何获取依赖版本号?

部署 api 模块时,虽然没有包含其父项目 po

m 文件中的版本号信息,但 b 项目在导入时仍能下载正确版本依赖,主要是因为:

  • api 模块父项目 pom 文件位于 b 项目的本地 maven 仓库中(已通过安装命令安装)。
  • b 项目导入时,会自动从本地 maven 仓库(存在 a 项目 pom 文件)获取 api 模块引用的依赖版本信息。

解决方案:

发布 api 模块时,禁止递归部署,避免未发布的父项目也一起发布。

问题 2:避免 api 和 b 项目的依赖冲突

api 模块与 b 项目都引用了 mybatis-plus,但版本不同,导致依赖冲突。除了修改 b 项目版本以外,可以通过排除机制解决冲突:

在 b 项目的 pom 文件中,排除 api 模块中引用的 mybatis-plus 依赖:


    xxxx
    module-api
    
        
            com.baomidou
            *