Java Flyway在Jar中找不到迁移
我制作了一个SpringBoot应用程序,并将其打包为一个JAR 当我调用我的jar时,我有一个参数强制application.properties,一个用于dev,另一个用于prod 在dev上,我对flyway有以下配置:Java Flyway在Jar中找不到迁移,java,flyway,Java,Flyway,我制作了一个SpringBoot应用程序,并将其打包为一个JAR 当我调用我的jar时,我有一个参数强制application.properties,一个用于dev,另一个用于prod 在dev上,我对flyway有以下配置: spring.flyway.check-location=false spring.flyway.locations=filesystem:./src/main/resources/migrations 关于Prod,我有以下几点: spring.flyway.chec
spring.flyway.check-location=false
spring.flyway.locations=filesystem:./src/main/resources/migrations
关于Prod,我有以下几点:
spring.flyway.check-location=false
spring.flyway.locations=filesystem:./BOOT-INF/classes/migrations
但是在prod上我找不到迁移
请注意,我只是将位置从src/main/java/resources更改为boot-inf…因为jar就是这样组成的
有什么想法吗
在询问错误之前,没有消息,它只是说没有要迁移的内容,因为它正在寻找错误的路径。在第一种情况下(dev),它可以工作,因为应用程序默认在根项目目录中执行。它采用的是开发文件,而不是构建文件——这是不正确的,因为它不能保证它在生产环境中正常工作(事实上,您已经看到)
这在生产环境中不再起作用,因为BOOT-INF
在构建包(JAR)中,而不是可以通过文件系统路径引用的物理文件
src/main/resources
中的文件以及BOOT-INF/classes
都打包为JAR的一部分。JAR中的文件必须通过类路径引用。因此,这两种情况下的设置都应为:
spring.flyway.locations=classpath:/migrations
这是什么文件系统?在这两种情况下,您都应该使用类似于
classpath:/migrations
。@paulorodriguez如果有帮助,您可以接受答案。对不起,我不知道