Flyway не может найти миграции внутри Jar - PullRequest
0 голосов
/ 19 марта 2019

Я сделал весеннее загрузочное приложение и пакет в виде JAR.

Когда я вызываю свой jar, у меня есть параметр для принудительного применения application.properties, один для dev, другой для prod.

В dev, у меня есть следующая конфигурация для пролетного пути:

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 ... потому что из этого состоит баночка.

Есть мысли?

Прежде чем просить об ошибках, сообщений нет, просто говорят, что нечего переносить, потому что он ищет неправильный путь.

1 Ответ

0 голосов
/ 19 марта 2019

В первом случае (dev) это работает, потому что приложение выполняется в корневом каталоге проекта по умолчанию.Он берет файлы разработки, а не встроенные файлы - что неверно, потому что это не дает гарантии, что он работает в производстве (факт, который вы действительно видите).

Это больше не работает в производстве, потому чтоBOOT-INF находится внутри пакета сборки (JAR) и не является физическим файлом, на который можно ссылаться с помощью пути к файловой системе.

Файлы в src/main/resources упаковываются как часть JAR, а также BOOT-INF/classes.К файлам внутри JAR нужно обращаться через classpath.Итак, настройки должны быть в обоих случаях:

spring.flyway.locations=classpath:/migrations
...