我制作了一个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的制作方式。
有什么想法吗?
在请求错误之前,没有任何消息,只是说没有什么要迁移的,因为它在寻找错误的路径。
答案 0 :(得分:0)
在第一种情况下(dev)它起作用,因为默认情况下该应用程序在根项目目录中执行。它需要开发文件,而不是构建文件-这是不正确的,因为它不能保证它可以在生产环境中正常工作(您实际看到的事实)。
这在生产环境中不再起作用,因为BOOT-INF
位于构建包(JAR)内,而不是可以通过文件系统路径引用的物理文件。
src/main/resources
中的文件与BOOT-INF/classes
一起打包为JAR的一部分。必须通过classpath引用JAR中的文件。因此,在两种情况下都应设置:
spring.flyway.locations=classpath:/migrations