java - 无法将 Spring Boot 应用升级到 Flyway 7.0.0
问题描述
我正在尝试升级我的 Spring Boot 2.3.4 应用程序以使用 Flyway 7.0.0(最新版本)。以前它使用的是 Flyway 6.5.6。中的相关条目build.gradle
如下所示。
buildscript {
ext {
flywayVersion = "7.0.0" // changed from 6.5.6
}
}
plugins {
id "org.flywaydb.flyway" version "${flywayVersion}"
}
dependencies {
implementation "org.flywaydb:flyway-core:${flywayVersion}"
}
flyway {
url = "jdbc:postgresql://0.0.0.0:5432/postgres"
user = "postgres"
password = "secret"
}
当我启动应用程序时发生以下错误,例如./gradlew bootRun
应用程序无法启动
描述:
试图调用不存在的方法。尝试是从以下位置进行的:
org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65)
以下方法不存在:
'int org.flywaydb.core.Flyway.migrate()'
该方法的类 org.flywaydb.core.Flyway 可从以下位置获得:
jar:file:/Users/antonio/.gradle/caches/modules-2/files-2.1/org.flywaydb/flyway-core/7.0.0/623494c303c62080ca1bc5886098ee65d1a5528a/flyway-core-7.0.0.jar!/org/flywaydb/core/Flyway.class
类层次结构是从以下位置加载的:
org.flywaydb.core.Flyway: file:/Users/antonio/.gradle/caches/modules-2/files-2.1/org.flywaydb/flyway-core/7.0.0/623494c303c62080ca1bc5886098ee65d1a5528a/flyway-core-7.0.0.jar
行动:
更正应用程序的类路径,使其包含一个兼容的 org.flywaydb.core.Flyway 版本
解决方案
在 Flyway 7 中,签名发生了migrate
变化。
要让 Flyway 7.xx 与 Spring Boot 2.3.x 一起使用,您可以提供自定义 FlywayMigrationStrategy 实现,它调用正确的migrate
方法。
import org.flywaydb.core.Flyway;
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
import org.springframework.stereotype.Component;
@Component
public class FlywayMigrationStrategyImpl implements FlywayMigrationStrategy {
@Override
public void migrate(Flyway flyway) {
flyway.migrate();
}
}
推荐阅读
- angular - 在 nativescript(typescript + angular)中不使用 formdata 发布图像和其他信息
- ansible - Ansible Playbook 中的 Debug 语句与 Ansible Role 中的行为不同
- android - 特权系统应用程序的权限处理
- materialize - 日期选择器提交格式
- clearcase - 如何在 clearcase 中签出文件的特定版本?
- javascript - 如何根据所选选项设置下拉按钮文本?
- python - Cloud Firestore 更新方法在几次更新后崩溃
- asp.net-core-webapi - 在值对象表中插入数据
- c# - 当我连续运行多重测试时,NSubstitue Received() 不起作用,但如果我单独运行测试,它们会起作用
- mongodb-query - mongodb:更新文档或替换现有文档,哪个更快