这个是我的原有依赖版本:
<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<flyway.version>5.0.3</flyway.version>
yaml配置:
spring:
#flyway配置
flyway:
baseline-on-migrate: true
#数据库连接配置
url: ${spring.datasource.druid.url}
user: ${spring.datasource.druid.username}
password: ${spring.datasource.druid.password}
#忽略脚本顺序
out-of-order: true
异常信息:
Caused by: java.lang.NoClassDefFoundError: org/flywaydb/core/api/configuration/FluentConfiguration
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463)
... 21 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.flywaydb.core.api.configuration.FluentConfiguration
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 25 common frames omitted
到这里其实有点懵逼因为我以前用flyway是没有问题的,
以前的的maven依赖:
<!-- flyway-->
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.0.3</version>
</dependency>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/>
</parent>
yaml配置:
spring:
#flyway配置
flyway:
baseline-on-migrate: true
#数据库连接配置
url: ${spring.datasource.url}
user: ${spring.datasource.username}
password: ${spring.datasource.password}
#忽略脚本顺序
out-of-order: true
但是我现在要用SpringBoot2.x版本不可能再用以前的配置,在网上找了一些资料,了解到这个问题引起的原因是因为springboot2.x对flyway的依赖为5.x,旧的api已经不支持,存在很多问题.大家可以看看这个SpringBoot的GIT网址里面有一些版本更新说明:
https://github.com/spring-projects/spring-boot/search?q=flyway&unscoped_q=flyway
解决方法跟换flyway依赖版本:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.1</version>
</dependency>