【发布时间】:2021-04-29 17:04:24
【问题描述】:
我有一个 Java Spring Boot 应用程序,在我的 Maven pom.xml 中将 Flyway 配置为依赖项(我有一个父 pom 和一个项目 pom...Flyway 在我的项目 pom 中定义)。
<dependencies>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>4.2.0</version>
</dependency>
...
只有 application.properties 中的几个条目:
flyway.enabled=true
flyway.out-of-order=true
我可以运行一个 maven 任务来让 Flyway 运行 migrate 来创建/更新我的数据库,然后针对它运行我的应用程序,但是我无法让它在正确的时间调用 migrate运行我的应用程序(这在产品中显然很重要)。看起来我的所有 Spring 类都首先被实例化,其中一些涉及查看数据库,然后发生 Flyway 迁移,因此例如,如果您针对空数据库运行应用程序,则应用程序在尝试访问任何内容时崩溃数据库。
关于在我的 Spring Boot 应用程序启动过程中如何让 Flyway 更早地进行迁移的任何提示?
【问题讨论】:
-
在你的父 pom 中,是否存在 Flyway 依赖项。我们使用 gradle,flyway 出现在顶部。
-
为了清楚起见,我已经在我的项目 pom 中定义了它,而不是我的父 pom,但是对于你的问题,虽然它首先列出,但我没有指出任何特定的依赖关系。也许我应该研究一下 - 否则我也可能必须直接在代码中将其声明为已配置的 Bean 并在那里指出依赖关系。但无论哪种方式,我都不确定在 Flyway 上直接指示什么依赖项,因为依赖项指示必须在 before 配置什么。因此,也许我必须将 Flyway 指示为对当前早期加载的其他内容的依赖。
标签: java spring-boot flyway