本文主要介绍了maven多模块依赖版本不一致问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
复习springcloud-alibaba的时候,在自己本地搭建好了环境并做了个测试没有发现异常,第二天在公司克隆代码下来之后服务器启动失败,在此记录问题以及解决方案。
项目结构:
├─springcloud-alibaba
├─.idea
├─shop-common
├─shop-order
├─shop-product
└─shop-user
项目环境:
父工程:
<properties>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
shop-common模块:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
shop-product、shop-order、shop-user三个模块都引入了shop-common
问题:
除了shop-common模块之外,其他三个模块的mysql连接器依赖的版本都是8.0.15,因为我本地的mysql版本刚好这两个连接器的版本都可以使用,所以第一次测试的时候没有发现任何异常,但第二天在公司用的mysql版本需要更高级的连接器版本,所以项目启动的时候一直报连接错误,检查发现模块对应的依赖和自己的设置不一致,查阅资料后了解到这是maven的依赖原则的原因。
maven依赖原则:
- 最短路径原则 A -> B -> C -> D(V1) F -> G -> D(V2)
模块D重复引用依赖jar包,maven会自动选择最短的引用路径,所以模块D最后会选择V2版本的依赖。
- 优先声明原则
在引入依赖的时候直接声明版本则依赖使用当前版本。
这次的问题就出在了maven的最短路径原则上,由于我的其他三个模块都是直接依赖于父工程的,引入了shop-common模块之后路径长了1,恰好父工程是一个springboot工程,里面已经默认配置了一个<mysql.version>8.0.15</mysql.version>,所以导致了其他三个模块都是使用的这个版本的依赖。
解决方案:
在父工程中的properties标签锁定需要的版本依赖
<properties>
<mysql.version>5.1.6</mysql.version>
</properties>
到此这篇关于maven多模块依赖版本不一致问题解决的文章就介绍到这了,更多相关maven多模块依赖内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:maven多模块依赖版本不一致问题解决


- ExecutorService Callable Future多线程返回结果原理解析 2023-06-01
- JSP页面间传值问题实例简析 2023-08-03
- 基于Java Agent的premain方式实现方法耗时监控问题 2023-06-17
- 深入了解Spring的事务传播机制 2023-06-02
- SpringBoot使用thymeleaf实现一个前端表格方法详解 2023-06-06
- Springboot整合minio实现文件服务的教程详解 2022-12-03
- Spring Security权限想要细化到按钮实现示例 2023-03-07
- Java实现顺序表的操作详解 2023-05-19
- Java中的日期时间处理及格式化处理 2023-04-18
- JSP 制作验证码的实例详解 2023-07-30