项目上使用flyway来管理数据库版本,但是遇到了一件奇怪的事,这件事发生的时间点是springboot从2.3.12升级到2.6.7版本,升级后到底发生了什么,到底是谁引入了flyway 8.0.5版本呢,博主在pom中显示引入的flyway版本为7.1.1,在这个公共jar包里面执行mvn dependency:tree看到的flyway版本也是7.1.1,为什么这个公共jar包被其他项目引入后执行mvn dependency:tree却显示 flyway的版本为8.0.5,而且显示也是由这个公共jar包引入的。
刚开始没去想springboot版本升级的问题,后来找到问题后再去看确实就是springboot版本升级导致的,因为笔者在dependencymanagement中引入了spring-boot-dependencies这个依赖,下面贴出这种依赖做了些啥,这里只贴出跟flyway关联部分:
org.flywaydb flyway-core ${flyway.version} --此处flyway.version为8.0.5
由于dependencyManagement指定的maven插件版本优先级要高,而且在不使用里面的maven插件时用mvn dependency:tree根本扫描不出来,好了,找到问题根源了,下面给出解决方案:
这个是基于maven dependencyManagement指定的版本优先级要高于dependencies中的版本,在spring-boot-dependencies前面增加flyway的依赖版本
org.flywaydb flyway-core 7.1.1 org.springframework.boot spring-boot-dependencies 2.6.13 pom import