我们走了..
我们有一个 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
节点。
如果我错过任何重要信息只是让我知道,我试图尽可能详细。
答案 0 :(得分:0)
这似乎在liquibase的更高版本中比在春季启动时设置的更新。
通过以下方式覆盖版本:
ext["liquibase.version"] = "3.5.4"
此外,请注意 spring boot 1.5
中仍存在此问题