Spring Boot启动触发Liquibase 4.0不支持绝对路径错误如何解决?
Liquibase 4.0+ 绝对路径引用报错解决方案
根因定位
报错并非来自application.yaml里的主changelog路径配置,而是来自master xml文件内部的<include>标签路径规则不符合Liquibase 4.0+的要求。Liquibase 4.0+移除了无上下文的绝对路径解析规则,默认会把不带相对路径标识的include文件路径识别为绝对路径处理。
解决方案
方案1:使用相对路径引用(推荐)
因为db-changelog-1.0.xml和db-changelog-master.xml处于同一目录,直接在include标签添加relativeToChangelogFile="true"属性,标识路径相对于当前changelog文件解析:
<include file="db-changelog-1.0.xml" relativeToChangelogFile="true"/>
方案2:使用全classpath路径引用
如果不想用相对路径,直接给include的file属性补全classpath全路径:
<include file="classpath:/db/changelog/db-changelog-1.0.xml"/>
额外校验项
- 主配置保留
classpath:/db/changelog/db-changelog-master.xml写法即可,开头的斜杠可以避免不同容器的classpath加载差异 - 确认项目的
src/main/resources目录已被标记为资源根目录,编译后target/classes下存在db/changelog目录及对应xml文件
内容的提问来源于stack exchange,提问作者Clancinio
相关产品推荐
相关产品推荐

