SpringBoot多模块项目中Liquibase加载跨模块变更日志失败问题
解决SpringBoot多模块中Liquibase找不到跨模块变更日志文件的问题
确认变更日志文件的实际路径
检查db-common模块的src/main/resources目录结构,确保changelog-master.yaml的路径是src/main/resources/com/myproject/dbcommon/db/changelog/changelog-master.yaml。注意classpath路径对应resources下的目录层级,和Java源码的包结构保持一致,避免大小写错误或目录层级偏差。使用
classpath*:前缀扫描跨模块资源
单模块场景下classpath:可定位资源,但多模块中依赖模块的资源存于独立jar包,将配置修改为:spring.liquibase.change-log=classpath*:com/myproject/dbcommon/db/changelog/changelog-master.yamlclasspath*:会遍历所有classpath中的jar包,匹配符合路径的文件。验证依赖模块的资源打包配置
检查db-common模块的构建配置(Maven/Gradle),确保资源文件被正确打包到jar中:- Maven:默认
src/main/resources下的文件会被打包,若自定义了<resources>节点,确认未排除.yaml文件或目标目录; - Gradle:确保
sourceSets.main.resources包含目标路径,无额外exclude规则。
- Maven:默认
确认依赖范围配置
检查customerservice模块对db-common的依赖范围,必须是compile(Maven)或implementation(Gradle),避免使用provided等不会将依赖打包到运行环境的范围。例如Maven依赖配置:<dependency> <groupId>com.myproject</groupId> <artifactId>db-common</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency>清理缓存并重新构建项目
执行构建工具的清理命令,清除旧的编译产物,再重新构建整个项目:- Maven:
mvn clean install - Gradle:
gradle clean build
之后重启customerservice模块,避免因缓存导致资源未更新。
- Maven:
内容的提问来源于stack exchange,提问作者DigitalMachine
相关产品推荐
相关产品推荐

