GCP部署Spring Boot应用时Liquibase changelog文件找不到求助
1. 检查Liquibase是否被意外启用
你配置了spring.liquibase.enabled=false,但报错显示Liquibase仍在尝试加载变更日志,大概率是atlassian-connect-spring-boot-jpa-starter自动启用了Liquibase。需要添加atlassian专属的禁用配置:
atlassian.connect.liquibase.enabled=false
如果确实需要使用Liquibase,再保留启用逻辑。
2. 修正变更日志路径配置
报错明确提示Liquibase 4.0+不再支持绝对路径写法,你当前配置classpath:/liquibase/liquibase-changeLog.xml里的开头/会被识别为绝对路径,改为相对路径格式即可:
spring.liquibase.change-log=classpath:liquibase/liquibase-changeLog.xml
同时可通过命令验证jar包内文件路径是否正确:
jar tf your-app.jar | grep liquibase-changeLog.xml
确保输出为BOOT-INF/classes/liquibase/liquibase-changeLog.xml,这是Spring Boot jar包中classpath资源的标准路径结构。
3. 排查依赖版本冲突
你的spring-cloud-gcp-starter-sql-mysql 1.1.1.RELEASE版本较老,可能与atlassian-connect-spring-boot-starter 2.3.3引入的Liquibase 4.x+版本存在适配问题。可通过以下命令查看依赖树,确认Liquibase实际版本:
mvn dependency:tree | grep liquibase
若版本为4.x+,务必遵循其路径规则;同时建议升级spring-cloud-gcp-starter-sql-mysql到与当前Spring Boot版本匹配的较新版本(比如对应Spring Boot 2.7.x的3.4.x系列),减少兼容性风险。
4. App Engine Flex环境classpath验证
在App Engine Flex环境中,Spring Boot jar包运行时的classpath根目录为BOOT-INF/classes,确保你的变更日志文件确实放在src/main/resources/liquibase/目录下——Maven打包时会自动将该目录下的文件同步到BOOT-INF/classes/liquibase/。
内容的提问来源于stack exchange,提问作者Ram's

