升级Flyway 10与Spring Boot 3.1.5时遭遇FlywayAutoConfiguration错误
Spring Boot 3.1.5 搭配 Flyway Core 10.0.0 启动报错解决
我在pom.xml中使用Flyway Core 10.0.0版本搭配Spring Boot 3.1.5,运行Flyway测试时触发以下错误:
尝试调用一个不存在的方法,调用位置如下:
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration.configureProperties(FlywayAutoConfiguration.java:254)不存在的方法为:
'org.flywaydb.core.api.configuration.FluentConfiguration org.flywaydb.core.api.configuration.FluentConfiguration.licenseKey(java.lang.String)'调用方法的类加载路径:
jar:file:/C:/Users/sx8428/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.1.5/spring-boot-autoconfigure-3.1.5.jar!/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class被调用方法的类可用路径:
jar:file:/C:/Users/sx8428/.m2/repository/org/flywaydb/flyway-core/10.0.0/flyway-core-10.0.0.jar!/org/flywaydb/core/api/configuration/FluentConfiguration.class被调用方法的类层次加载路径:
org.flywaydb.core.api.configuration.FluentConfiguration: file:/C:/Users/sx8428/.m2/repository/org/flywaydb/flyway-core/10.0.0/flyway-core-10.0.0.jar
问题原因
这是版本兼容性不匹配导致的:Spring Boot 3.1.5的Flyway自动配置类会调用licenseKey方法,但Flyway 10.0.0已经移除了该方法(该方法仅存在于Flyway 9.x及更早版本,10.x版本对API做了调整)。
解决方案
方案一:降级Flyway版本
使用Spring Boot 3.1.5官方兼容的Flyway 9.x系列版本,可直接指定版本或依赖Spring Boot Starter让其自动管理版本:
- 指定具体兼容版本:
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>9.22.3</version> </dependency>
- 依赖Spring Boot Starter自动管理:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-flyway</artifactId> </dependency>
方案二:升级Spring Boot版本
升级到支持Flyway 10.x的Spring Boot版本(如3.2.x及以上),这些版本的自动配置类已适配Flyway 10.x的API变更:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> <!-- 从仓库查找父依赖 --> </parent>
内容的提问来源于stack exchange,提问作者Shubham Shekhar
相关产品推荐
相关产品推荐

