Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Flyway在Jar中找不到迁移_Java_Flyway - Fatal编程技术网

Java Flyway在Jar中找不到迁移

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

我制作了一个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.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如果有帮助,您可以接受答案。对不起,我不知道