#java #flyway
#java #flyway
Вопрос:
Я создал приложение spring boot и упаковал его как JAR.
Когда я вызываю свой jar, у меня есть параметр для принудительного запуска application.properties, один для разработчика, другой для 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.
Есть мысли?
Прежде чем запрашивать ошибки, сообщений нет, просто говорится, что нечего переносить, потому что он ищет неправильный путь.
Комментарии:
1. Что это
filesystem
? Вы должны использовать что-то вродеclasspath:/migrations
в обоих случаях.
Ответ №1:
В первом случае (dev) это работает, потому что приложение выполняется в корневом каталоге проекта по умолчанию. Он принимает файлы разработки, а не встроенные файлы — что неверно, потому что это не дает гарантии, что это работает на производстве (факт, который вы на самом деле видите).
Это больше не работает в рабочей среде, потому что BOOT-INF
находится внутри пакета сборки (JAR), а не в физическом файле, на который вы можете ссылаться с помощью пути к файловой системе.
Файлы в src/main/resources
также упакованы как часть JAR BOOT-INF/classes
. Ссылки на файлы внутри JAR должны быть через classpath. Итак, настройки должны быть в обоих случаях:
spring.flyway.locations=classpath:/migrations
Комментарии:
1. @paulorodriguez Если это помогло, вы можете принять ответ.
2. извините, не знал
3. в моем случае не работает