Flyway не нашел мой файл миграции в sbt - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь применить миграции для поддержки базы данных H2 в тесте, моя структура папок:

src
- test
-- resources
--- db
---- migration
----- V1_0__init_tables.sql

Моя конфигурация настроена на classpath:db/migration через

        Flyway
          .configure()
          .locations(migrateLocations)
          .dataSource(url, user, password)
          .load()
          .migrate() 

Когда я запускаю свои тесты, я получаю следующий вывод

2018-11-29 16:14:14,351 DEBUG [ScalaTest-run] slf4j.Slf4jLog (Slf4jLog.java:45) - Scanning for classpath resources at 'classpath:db/migration' ...
2018-11-29 16:14:14,351 DEBUG [ScalaTest-run] slf4j.Slf4jLog (Slf4jLog.java:45) - Determining location urls for classpath:db/migration using ClassLoader sun.misc.Launcher$AppClassLoader@18b4aac2 ...
2018-11-29 16:14:14,420 WARN  [ScalaTest-run] slf4j.Slf4jLog (Slf4jLog.java:53) - Unable to resolve location classpath:db/migration
2018-11-29 16:14:14,421 DEBUG [ScalaTest-run] slf4j.Slf4jLog (Slf4jLog.java:45) - Scanning for classes at classpath:db/migration

, что запутывает меня, почему Flyway не может найти мой файл.Насколько я могу судить, я сделал все в соответствии с рекомендациями документации.Мой тест в конечном итоге не проходит, потому что моя таблица никогда не переносилась и поэтому не может быть найдена Slick.

Возможно, в моем файле миграции есть ошибка, но я бы предположил, что Flyway будет иметь какой-то видвойти для этого?Я не вижу ничего подобного.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Spring Boot 2 устанавливает spring.flyway.locations=classpath:db/migration по умолчанию и указывает на папку src/main/resources/db/migration независимо от того, какой тестовый модуль вы запускаете.Вы можете поместить каталог файлов SQL в файловую систему, а затем установить spring.flyway.locations=filesystem:path/to/yourdir.

0 голосов
/ 30 ноября 2018

Преднамеренно ли вы поместили файлы миграции в src/test/resources?В любом случае, я не думаю, что Flyway найдет их там, поскольку ваш classpath:db/migration скорее всего будет ссылаться на src/main/resources, а не на тестирование ресурсов.Просто попробуйте разместить файлы миграции под основными ресурсами.

...