Flyway无法在Jar中找到迁移

时间:2019-03-19 18:24:04

标签: java flyway

我制作了一个Spring Boot应用程序并将其打包为JAR。

当我调用jar时,我有一个参数来强制application.properties,一个用于dev,另一个用于prod。

在开发人员中,我的飞行路线配置如下:

spring.flyway.check-location=false
spring.flyway.locations=filesystem:./src/main/resources/migrations

在产品上,我有以下内容:

spring.flyway.check-location=false
spring.flyway.locations=filesystem:./BOOT-INF/classes/migrations

但是在产品上我找不到迁移。

请注意,我只是将位置从src / main / java / resources更改为boot-inf ...,因为该jar的制作方式。

有什么想法吗?

在请求错误之前,没有任何消息,只是说没有什么要迁移的,因为它在寻找错误的路径。

1 个答案:

答案 0 :(得分:0)

在第一种情况下(dev)它起作用,因为默认情况下该应用程序在根项目目录中执行。它需要开发文件,而不是构建文件-这是不正确的,因为它不能保证它可以在生产环境中正常工作(您实际看到的事实)。

这在生产环境中不再起作用,因为BOOT-INF位于构建包(JAR)内,而不是可以通过文件系统路径引用的物理文件。

src/main/resources中的文件与BOOT-INF/classes一起打包为JAR的一部分。必须通过classpath引用JAR中的文件。因此,在两种情况下都应设置:

spring.flyway.locations=classpath:/migrations