Spring Boot 2.7.5集成Liquibase无法识别XML格式变更日志
问题描述
使用spring-boot-starter-parent:2.7.5版本,已在src/main/resources/application.yml及src/test/resources/application.yml中配置Liquibase变更日志路径为classpath:/db/changelog/db.changelog-master.xml,且该XML文件确实存在,但构建时触发错误:
Liquibase failed to start because no changelog could be found at 'classpath:/db/changelog/db.changelog-master.yaml'
解决方案
Spring Boot完全支持XML格式的Liquibase变更日志,报错是配置识别问题导致的,按以下步骤排查修复:
修正配置键的前缀
Spring Boot中Liquibase的配置必须带spring.前缀,若配置里直接写liquibase.change-log,Spring Boot无法正确读取该配置,Liquibase会启用默认规则查找yaml格式的文件。
正确的application.yml配置示例:spring: liquibase: change-log: classpath:/db/changelog/db.changelog-master.xml校验文件路径与大小写
确认XML文件确实存放在src/main/resources/db/changelog/目录下,文件名的大小写要和配置完全一致(Linux/macOS环境下文件名大小写敏感)。清理构建缓存
构建缓存可能导致文件未被正确加载,执行对应命令清理后重新构建:- Maven项目:
mvn clean install - Gradle项目:
./gradlew clean build
- Maven项目:
内容的提问来源于stack exchange,提问作者axiopisty

