如何在带有Spring Boot的Grails 3项目中使用Flyway';s自动配置
根据以下说明,在Grails 3项目中使用Flyway应该是可能的: Grails 3.x基于Spring Boot,为Flyway提供了开箱即用的集成。如何在带有Spring Boot的Grails 3项目中使用Flyway';s自动配置,grails,spring-boot,flyway,grails-3.0,Grails,Spring Boot,Flyway,Grails 3.0,根据以下说明,在Grails 3项目中使用Flyway应该是可能的: Grails 3.x基于Spring Boot,为Flyway提供了开箱即用的集成。 您只需将flyway core添加到构建中即可。gradle: 编译“org.flywaydb:flywaycore:4.1.1” 然后,Spring Boot将自动将Flyway与其数据源连接起来,并在启动时调用它 这对我不管用。Flyway不会在应用程序启动时启动。在日志中,我看到一些可疑的行: 因此,在我看来,它不起作用,因为DataS
您只需将flyway core添加到构建中即可。gradle:
编译“org.flywaydb:flywaycore:4.1.1”
然后,Spring Boot将自动将Flyway与其数据源连接起来,并在启动时调用它 这对我不管用。Flyway不会在应用程序启动时启动。在日志中,我看到一些可疑的行: 因此,在我看来,它不起作用,因为
DataSourceAutoConfiguration
被排除在自动配置之外
这个分析正确吗
DataSourceAutoConfiguration
被排除在外的原因和位置?应该是在Grails的深处,因为我不知道我的代码中有任何地方会导致这种情况
我如何才能使flyway集成到Grails中,正如flyway文档所承诺的那样?我知道我可以通过resources.groovy(我的项目中的工作代码,灵感来源于):
但如果可能的话,我更喜欢自动配置方法,因为它支持许多现成的flyway属性,并且我可以保持我的resources.groovy整洁
FlywayAutoConfiguration did not match
- @ConditionalOnClass found required class 'org.flywaydb.core.Flyway' (OnClassCondition)
- @ConditionalOnProperty (flyway.enabled) matched (OnPropertyCondition)
- @ConditionalOnBean (types: javax.sql.DataSource; SearchStrategy: all) did not find any beans (OnBeanCondition)
...
Exclusions:
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
@Configuration
@ConditionalOnClass(Flyway.class)
@ConditionalOnBean(DataSource.class)
@ConditionalOnProperty(prefix = "flyway", name = "enabled", matchIfMissing = true)
@AutoConfigureAfter({ DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class })
public class FlywayAutoConfiguration {
if (application.config.flyway.enabled != false) {
flyway(Flyway) { bean ->
bean.initMethod = 'migrate'
dataSource = ref('dataSource')
baselineOnMigrate = application.config.flyway.baselineOnMigrate
}
BeanDefinition sessionFactoryBeanDef = getBeanDefinition('sessionFactory')
if (sessionFactoryBeanDef) {
def dependsOnList = ['flyway'] as Set
if (sessionFactoryBeanDef.dependsOn?.length > 0) {
dependsOnList.addAll(sessionFactoryBeanDef.dependsOn)
}
sessionFactoryBeanDef.dependsOn = dependsOnList as String[]
}
}