Java 未能将Spring Boot应用升级到Flyway 7.0.0

Java 未能将Spring Boot应用升级到Flyway 7.0.0,java,spring-boot,flyway,Java,Spring Boot,Flyway,我正在尝试升级我的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 "${fl

我正在尝试升级我的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
已从以下位置加载类层次结构:

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的单一兼容版本


基本上,请参见Philip对您的问题的评论

Flyway 7.x.x目前与Spring Boot 2.3.4不兼容

暂时的解决办法是降级到Flyway 6.5.7(最后的6.x.x版本),直到Spring Boot 2.3.5发布

请阅读更多内容,并在此处关注问题:


支持Flyway的新配置选项:

降级到Flyway 6.5.7有效。

在Flyway 7中,迁移的签名已更改

要使Flyway 7.x.x与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();
    }
}

请提供github代码库以检查问题。你能通过github提供你的项目吗?@AnishB。在Flyway 7中,我们对api进行了突破性的更改,其中之一是更改migrate()以返回有关迁移内容的信息,而不仅仅是一个int。因此,在发布新版本的springboot之前,它将与springboot不兼容,并根据新版本编译。我建议对spring boot github源代码提出一个问题: