Feign接口模块依赖问题:版本继承与冲突如何解决?

Feign接口模块依赖:版本继承与冲突解决方案

本文探讨在多模块项目中,使用Feign接口时遇到的依赖版本继承和冲突问题,并提供相应的解决方法。

项目背景:A项目包含api模块(纯Feign接口)和service模块(Feign接口实现)。api模块部署到私有Maven仓库后,B项目引入api模块依赖,从而调用其接口。

问题一:api模块依赖版本信息传递

api模块的pom.xml使用标签继承A项目的pom.xml,但私有仓库仅包含api模块,缺少A项目信息。api模块依赖的版本号定义在A项目的pom.xml中。那么,B项目如何获取正确的依赖版本?

解决方案:

最可能的情况是,开发者在本地构建时,Maven会根据本地已存在的A项目pom.xml文件获取依赖版本信息。 如果希望避免在发布时发布子模块,可以使用mvn deploy:deploy-file -DgroupId=... -DartifactId=... -Dversion=... -Dpackaging=jar -Dfile=... -DrepositoryId=... -Durl=... --non-recursive 命令,--non-recursive参数阻止递归部署子模块。

问题二:依赖冲突:MyBatis-Plus版本不一致

api模块和B项目都依赖MyBatis-Plus,但版本不同,导致冲突。除了修改版本号一致,还有什么方法解决?

解决方案:

在B项目的pom.xml中,使用标签排除api模块中引入的MyBatis-Plus依赖。 这样,B项目将使用其自身指定的MyBatis-Plus版本。

示例:


    xxxx
    module-api
    
        
            com.baomidou
            mybatis-plus-boot-starter  
        
    

通过以上方法,可以有效解决Feign接口模块依赖版本继承和冲突问题,确保项目稳定运行。 选择哪种方案取决于项目结构和具体需求。 如果可能,

统一依赖版本通常是最佳实践。