grails - 如何在 Grails3/Postgres 中配置 Flyway?

标签 grails flyway

我正在尝试使用 Flyway 为我的 Grails 3.2.8 应用程序运行迁移。根据https://flywaydb.org/documentation/plugins/grails只需要向 build.gradle 添加一个依赖项即可:

dependencies {
  compile "org.flywaydb:flyway-core:4.1.2"
}

由于我希望 Flyway 生成我的架构,我还编辑了 application.yml 以不生成域对象。如果我没有此设置,Grails 将生成我的表 - 而不是 Flyway。

environments:
    development:
        dataSource:
            dbCreate: none

我还添加了一个迁移文件:

grails-app
  conf
    db
      migration
        V1__create_tables.sql

我还在这里读到( https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html )可以完成一些额外的配置,因此我将其添加到 application.yml 中:

flyway:
  enabled: true
  locations: classpath:grails-app/conf/db/migration
  sql-migration-prefix: V
  sql-migration-suffix: .sql

我也尝试过不添加任何配置。我好像漏掉了什么?

最佳答案

flyway 的 spring-boot 自动配置默认依赖于自动配置时可用的一个 DataSource bean。

引用。 https://github.com/spring-projects/spring-boot/blob/v1.5.2.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java#L130

但是,如果 gorm 定义了 grails DataSource,则情况并非如此 - 启动自动配置后会发生这种情况。

一种可能的解决方案是定义一个“别名”DataSource bean,充当 Flyway 数据源,委托(delegate)给 gorm/grails 定义的 bean。

@Configuration
class FlywayConfig {

    @Autowired
    DataSource dataSource

    @Bean
    @FlywayDataSource
    DataSource flywayDataSource() {
        return dataSource
    }

}

示例:检查https://github.com/zyro23/stackoverflow-43211960/commit/c4063c900b7f96bc9ba65c84684a14a1992ca2a5

访问http://localhost:8080/dbconsole (jdbc:h2:mem:devDb) 您应该看到 TEST 表已创建。

关于grails - 如何在 Grails3/Postgres 中配置 Flyway?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43211960/

相关文章:

javascript - 如何在使用 Grails 3.3.2 的 war 版本中不生成 .gz 文件

java - Spring——跳过此测试的飞路

java - 在 spring boot @activeprofile 注解中配置 maven 配置文件

Flyway 之前的迁移发生了变化

java - 如何在 Spring Boot 应用程序中使用 Flyway 启动 H2 db TCP 服务器

grails - 为什么覆盖putAt会导致MissingPropertyException?

grails - 如何通过条件或条件进行查找

java - Grails XML 编码 : change default "<list>" root element name

grails - 为GSP中显示的数据生成文本(.txt)文件

java - Flyway 4.2.0 Oracle 11g 中多个节点并行故障