Flyway and Spring Boot

One minute read in JVM Highlights

Добавив jar файл с flyway-core в classpath приложения написанного на Spring Boot и не настроив миграции можно получить следующее исключение:

Caused by: org.flywaydb.core.api.FlywayException: Unable to determine URL for classpath location: db/migration (ClassLoader: sun.misc.Launcher$AppClassLoader@58644d46)

Добавление проперти flyway.enabled=false в application.properties решает проблему но! только при запуске приложения. К сожалению тесты не используют application.properties.

# application.properties
flyway.enabled=false

Быстрый поиск приводит нас например сюда: http://stackoverflow.com/questions/26210786/spring-boot-not-using-application-properties-in-tests, если вас не удовлетворил данный подход/решение то предлагаю пойти дальше и посмотреть мои конфигурационные файлы.

В данном проекте используется java configuration:

@ContextConfiguration(classes = { TestAppConfig.class })
@RunWith(SpringJUnit4ClassRunner.class)
// ... other annotations
public abstract class BaseSpringTest {
    // ...
}
@Configuration
@Import({ AppConfig.class })
public class TestAppConfig {
    // ...
}
@Configuration
@EnableAutoConfiguration(exclude = { FlywayAutoConfiguration.class })
@ComponentScan("by.ibragimov.rkeep")
public class AppConfig {
    // ...
}

В общем-то логично, там где мы включаем авто-конфигурацию, там мы должны иметь возможность ее выключить. И напоследок пару полезных ссылок по теме.

Ссылки:


← Ловушки Java Streams Git Bash for Windows →