You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.yaml
    

    classpath*:会遍历所有classpath中的jar包,匹配符合路径的文件。

  • 验证依赖模块的资源打包配置
    检查db-common模块的构建配置(Maven/Gradle),确保资源文件被正确打包到jar中:

    • Maven:默认src/main/resources下的文件会被打包,若自定义了<resources>节点,确认未排除.yaml文件或目标目录;
    • Gradle:确保sourceSets.main.resources包含目标路径,无额外exclude规则。
  • 确认依赖范围配置
    检查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模块,避免因缓存导致资源未更新。

内容的提问来源于stack exchange,提问作者DigitalMachine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:56:01