Travis CI构建时Liquibase 4.2.2加载master.xml报错咨询
Liquibase Travis CI 构建异常修复方案
触发报错的核心原因
- 报错最后一行已经明确给出规则:Liquibase 4.0 版本开始彻底移除了绝对路径指定changelog文件的能力,文件查找逻辑完全基于类路径实现,不再直接读取本地文件系统的绝对路径位置。
- 当前pom.xml中配置的
${basedir}/src/db/master.xml会拼接成完整的文件系统绝对路径,本地构建能正常执行,是因为IDE执行Maven任务时会自动将项目源码目录挂载到类路径下,绕开了版本校验逻辑;Travis CI为纯命令行执行的标准Maven构建,没有IDE的类路径补全逻辑,直接触发版本限制规则,才会提示找不到master.xml文件。
可落地的修复步骤
- 调整
liquibase-maven-plugin的配置,移除changeLogFile中的绝对路径前缀
原配置写法:
替换为相对类路径写法:<changeLogFile>${basedir}/src/db/master.xml</changeLogFile><changeLogFile>src/db/master.xml</changeLogFile> - 如果调整相对路径后仍然提示文件找不到,可在插件配置中显式添加类路径根标识,匹配报错提示中给出的规则:
<configuration> <!-- 保留原有的url、driver、账号密码配置 --> <classpathIncludingFiles>/</classpathIncludingFiles> </configuration> - 检查master.xml内部的
<include>标签路径,全部改为相对于master.xml文件自身位置的同级相对路径,不要拼接项目根目录前缀。比如master.xml位于src/db/目录下,原本配置的src/db/scripts/update_001.sql要改成scripts/update_001.sql,避免子引用文件同样触发绝对路径校验报错。 - 核对代码仓库提交记录,确认master.xml、对应SQL脚本都已推送到远端分支,没有被
.gitignore规则排除,避免CI环境拉取代码后缺少必要文件。
内容的提问来源于stack exchange,提问作者Dmitriy
相关产品推荐
相关产品推荐

