Liquibase includeAll标记被忽略

时间:2016-09-05 16:08:01

标签: spring spring-boot liquibase

我们走了..

我们有一个 Spring Boot 1.4.0 应用程序,我们正在使用 Liquibase 3.5.1 进行数据库管理。

我们所有的个人变更集文件都位于/src/main/resources/db/changelog,并且它们具有以下命名架构:[semanticVersion]-[descriptor].yml

然而,主更改日志位于运行时依赖项中。

db.changelog-master.yaml

databaseChangeLog:
  - changeSet:
      id: 1.0.1
      author: atlassian
      changes:
        - createTable:
            //code omitted for brevity
  - includeAll:
      path: classpath*:db/changelog
      errorIfMissingOrEmpty: false

现在问题。

通过IDEA运行应用程序将加载所有更改集并将其应用于我们的数据库。

但是,当我使用Spring Boot Gradle插件构建胖jar(bootRepackage任务)然后继续使用java -jar [project].jar运行它时,找到了主更改日志,表创建了但是所有的其他文件似乎......被忽略了。 databasechangelog表仅显示 1.0.1 更新,就是这样。有趣的是,如果我将error属性设置为true它只会失败一次我也会将path捏造成无法解析的东西。所以看起来目录很好。

NB!所有.yml文件都在胖罐中,检查并仔细检查:)

我还尝试将它们重命名为.yaml,我尝试用相应的.xml文件替换它们,没有解决任何问题。

我在Google,Stack和Liquibase JIRA上进行了挖掘,发现只有少数提到这种情况,从我读到的, 3.5.1 这个问题应该已经解决了。但没有骰子。

如果我将Liquibase依赖关系切换回 3.4.2 (这被提及作为一种可能的解决方案)并运行jar我会得到几千行异常,并以{{1}结束}说Exception未被识别为正确的文件,并且找不到db.changelog-master.yaml节点。

如果我错过任何重要信息只是让我知道,我试图尽可能详细。

1 个答案:

答案 0 :(得分:0)

这似乎在liquibase的更高版本中比在春季启动时设置的更新。

通过以下方式覆盖版本:

ext["liquibase.version"] = "3.5.4"

此外,请注意 spring boot 1.5

中仍存在此问题

参考:https://liquibase.jira.com/browse/CORE-2863