【问题标题】:Flyway not finding migrations in Maven multi module projectFlyway 在 Maven 多模块项目中找不到迁移
【发布时间】:2021-05-04 11:38:14
【问题描述】:

我有一个 Maven 多模块 Spring Boot 项目,其中包含模块 App、Domain1 和 Domain2。应用依赖于 Domain1 和 Domain2。

Flyway 在 App 模块中自动配置,迁移在 db/migrations 中。它运行没有问题。

在域模块中,我有带有 @AutoConfigureBefore(JpaAutoConfiguration::class) 的 AutoConfiguration 类,可以“每个域”手动运行 flyway。每个域在不同的位置都有它的迁移文件(以防止冲突):

域1:

    @Autowired
    fun migrateFlyway(dataSource: DataSource) {
        val cfg = FluentConfiguration()
            .locations("classpath:migrations/domain1")
            .baselineOnMigrate(true)
            .table("flyway_domain1_history")
            .dataSource(dataSource)
        val flyway = Flyway(cfg)
        flyway.migrate()
    }

域2:

    @Autowired
    fun migrateFlyway(dataSource: DataSource) {
        val cfg = FluentConfiguration()
            .locations("classpath:migrations/domain2")
            .baselineOnMigrate(true)
            .table("flyway_domain2_history")
            .dataSource(dataSource)
        val flyway = Flyway(cfg)
        flyway.migrate()
    }

问题是:域中的两个 flyway 实例都运行,创建了各自的历史表。但是:它们实际上都没有执行其中的 sql 文件,尽管它们存在(从目标文件夹中的 IntelliJ 检查,并且在使用 Maven 构建整个东西之后,SQL 文件存在于 JAR 中)。

我错过了什么吗?

【问题讨论】:

    标签: maven flyway


    【解决方案1】:

    没关系,在使用 Flyway 多年后,我只是不了解基线属性。 De 默认是 1,我的第一个脚本有版本 1。所以 Flyway 看到了,但跳过了。将基线设置为“000”解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2017-08-14
      • 2012-06-28
      • 2021-04-02
      • 1970-01-01
      • 2018-01-06
      相关资源
      最近更新 更多