maven多模块依赖版本不一致问题

  • 1. 问题描述
  • 2. 问题分析
    • 2.1 maven help插件分析
    • 2.2 maven依赖树分析
    • 2.3 父类定义版本
  • 3. 解决方案
  • 4.项目pom
    • 4.1 父类依赖
    • 4.2 子模块test-common依赖
    • 4.3 子模块test-web依赖

1. 问题描述

记录一个很有意思的问题,父工程A下边两个模块B与C,B依赖6.0.16.Final版本hibernate-validator,C依赖B,但是C中hibernate-validator版本竟然是6.2.0.Final。
如图所示:

2. 问题分析

原因是在父类spring-boot-starter-parent的spring-boot-dependencies中定义了hibernate-validator.version 版本号6.2.0.Final。

test-common中显示的指明了hibernate-validator版本号位6.0.16.Final,而在打包的时候仍然引用的是spring-boot-starter-paren父类中定义的版本号6.2.0.Final。

所以才会出现test-common中是6.0.16,test-web虽然引用了test-common,但是引用的并不是项目中的tets-common,而是打成jar包的test-common,而打成jar包的test-common依赖的是父类中定义的6.2.0版本。

这个可以通过mvnHelp或者打出mvn依赖树分析

2.1 maven help插件分析

打开pom文件,左下角txt切换到Dependency Analyzer

2.2 maven依赖树分析

## cd 到pom文件根目录,执行mvn dependency:tree > tree.txt
D:\work\ennwork\test\test-common>mvn dependency:tree > tree.txt

2.3 父类定义版本

  1. 父类pom
    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.2</version><relativePath/></parent>
  1. spring-boot-starter-parent-2.5.2.pom
  <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.2</version></parent>
  1. spring-boot-dependencies-2.5.2.pom,这个就是打包所引用的依赖。
    <hibernate.version>5.4.32.Final</hibernate.version><hibernate-validator.version>6.2.0.Final</hibernate-validator.version>

3. 解决方案

解决方案就是排除父类中定义版本的依赖,从新引入新版本依赖。当然也可以与父类版本依赖保持一致。

<dependency><groupId>com.example</groupId><artifactId>common-customize-core</artifactId><version>0.0.1-SNAPSHOT</version><exclusions><exclusion><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency>

4.项目pom

4.1 父类依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>test</artifactId><version>1.0.0-SNAPSHOT</version><name>test</name><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.2</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><java.version>1.8</java.version><test-common.version>1.0.0-SNAPSHOT</test-common.version><rdfa.framework.version>1.4.0-RELEASE</rdfa.framework.version></properties><modules><module>test-common</module><module>test-web</module></modules><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

4.2 子模块test-common依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>test</artifactId><groupId>com.example</groupId><version>1.0.0-SNAPSHOT</version></parent><artifactId>test-common</artifactId><properties><spring-cloud.version>Hoxton.SR8</spring-cloud.version><spring-boot.version>2.3.2.RELEASE</spring-boot.version><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.16.Final</version></dependency></dependencies></project>

4.3 子模块test-web依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>test</artifactId><groupId>com.example</groupId><version>1.0.0-SNAPSHOT</version></parent><artifactId>test-web</artifactId><packaging>jar</packaging><dependencies><dependency><groupId>com.example</groupId><artifactId>test-common</artifactId><version>1.0.0-SNAPSHOT</version><scope>provided</scope></dependency></dependencies><build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><verbose>true</verbose><overwrite>true</overwrite></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version></dependency></dependencies></plugin></plugins></build>
</project>

maven多模块依赖版本不一致问题相关推荐

  1. Error:依赖版本不一致

    在编译unity时发现一个问题:依赖版本不一致 解决方案: 通过nugut管理在已安装项里选中要更新的dll文件 转载于:https://www.cnblogs.com/newrohlzy/p/884 ...

  2. maven 公共模块依赖_「spring-boot 源码解析」spring-boot 依赖管理

    问题 maven 工程,依赖管理是非常基本又非常重要的功能,现在的工程越来越庞大,依赖越来越多,各种二方包.三方包太多太多,依赖冲突处理起来真是让人头疼,经常需要涉及到多个地方需要调整. 微信公众号: ...

  3. maven多模块依赖导入失败以及私服下载包卡死

    1.maven操作多模块项目打包操作root项目 在最顶层的项目上面打包不要操作子模块 2.网络情况糟糕经常容易出现下载包卡死 强制退出后 会导致下次下载继续卡死 需要记录卡死的包去repositor ...

  4. maven 公共模块依赖_idea 创建多模块依赖Maven项目

    本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着. 1. 创建一个新maven项目 2. 3. 输入groupid和artifactid,后面步骤 ...

  5. Spring学习总结(22)——Spring-framework-bom解决spring的不同模块依赖版本不同问题

    Spring不同模块或者与外部进行集成时,依赖处理就需要各自对应版本号.比如,较新spring与较老的quartz,它们集成就会遇到问题,给搭建和升级带来不便.因此Spring IO Platform ...

  6. Spring学习总结(22)——spring-framework-bom解决spring的不同模块依赖版本不同问题...

    Spring不同模块或者与外部进行集成时,依赖处理就需要各自对应版本号.比如,较新spring与较老的quartz,它们集成就会遇到问题,给搭建和升级带来不便.因此Spring IO Platform ...

  7. 【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

    Yan-英杰的主 悟已往之不谏 知来者之可追   C++程序员,2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 [粉丝福利] [文末送书] 目录: 本书特色: 问题描 ...

  8. maven 公共模块依赖_Maven 子模块 依赖 springboot 子模块的问题

    package com.datayes.quantgraph.security does not exist 子模块A 依赖 子模块 B,子模块B 是一个 springboot 项目. 我们知道spr ...

  9. Maven dependencyManagement中的依赖版本会覆盖传递依赖版本

    最近在项目中使用Maven遇到一个问题,明明传递依赖进来的是最新版本,但引用的还是旧版本.原来在parent pom中的dependencyManagement里指定了一个低版本的依赖,然后传递依赖的 ...

最新文章

  1. 史上最全最强SpringMVC详细示例实战教程
  2. 关于jenkins的安装及自动部署
  3. js调用java代码返回解决方案
  4. SAP物料管理自动记帐详解
  5. WinRAR 5.40 4.20 3.93 的注册码 - rarreg.key
  6. vijos p1347(最大乘积(整数划分?))(25—100分)
  7. CentOS7 最小化安装后的必备操作
  8. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
  9. Windows函数错误处理
  10. GCC9.2/Python3.8/Libvirt6.0/QEMU4.2 编译/配置/安装
  11. linux查看hid设备,linux hid设备读写
  12. 【报告分享】2019云安全威胁报告.pdf(附下载链接)
  13. Hello China操作系统STM32移植指南(三)
  14. javabs架构实习管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  15. 手绘风海报怎么做?手绘素材在哪里找?
  16. PMP学习笔记 第10章 项目沟通管理
  17. 安装Linux虚拟机
  18. 模具工业及其发展趋势
  19. access里面的表达式运用_表达式的示例
  20. word表格怎么缩小上下间距_word,20XX,怎么调整表格上下距离

热门文章

  1. S32K系列S32K144学习笔记——CAN驱动配置
  2. 三进制状压动态规划【涂抹果酱】 题解
  3. “地方之光”新地域品牌打造计划
  4. io多路复用·零拷贝·while死循环cpu
  5. Java八大基本类型详解
  6. 希腊匈牙利也能畅快自由行了!搜狗旅行翻译宝新增6种语言翻译
  7. divcss布局模板代码_(带手机版数据同步)天花板循环扇类网站织梦模板 小家电电器类网站源码下载...
  8. Android_Dialog cancle 和dismiss 区别
  9. [洛谷P4111][HEOI2015]小Z的房间
  10. 安利!推荐20款Intellij IDEA中炫酷的插件!