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

Spring Webflux Fat Jar中Liquibase CustomChange类找不到问题求助

解决Liquibase CustomChange类找不到的问题

问题根源

执行mvn clean install -Plocal时,Liquibase Maven插件的类加载器无法访问到项目中编译后的自定义变更类——因为此时Fat Jar还未生成,而插件默认的类路径不包含项目自身的编译输出目录。

解决方案

1. 配置Liquibase Maven插件的类路径

在pom.xml的Liquibase插件配置中,显式添加项目编译后的class目录到插件的类路径里:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>${liquibase.version}</version>
    <configuration>
        <changeLogFile>src/main/resources/db/changelog/db.changelog-master.xml</changeLogFile>
        <!-- 其他原有配置(如数据库url、用户名等) -->
        <classpath>${project.build.directory}/classes</classpath>
    </configuration>
</plugin>

或者通过依赖声明的方式添加:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>${liquibase.version}</version>
    <configuration>
        <!-- 其他原有配置 -->
    </configuration>
    <dependencies>
        <dependency>
            <groupId>com.abl.rjmdb</groupId>
            <artifactId>你的项目artifactId</artifactId>
            <version>${project.version}</version>
            <scope>system</scope>
            <systemPath>${project.build.directory}/classes</systemPath>
        </dependency>
    </dependencies>
</plugin>

配置后,Liquibase插件就能在构建阶段找到自定义的DoNothingChange类。

2. 切换Liquibase执行时机(可选)

如果自定义变更仅需在应用运行时执行,而非maven构建阶段,可以将Liquibase的执行绑定到Spring Boot启动流程:

  • 引入Spring Boot集成Liquibase的依赖:spring-boot-starter-liquibase
  • 在application.yml/application.properties中配置Liquibase的changelog路径等参数
  • 此时自定义变更类会被Spring Boot Fat Jar的类加载器加载,不会出现找不到的问题

3. 核对类路径与变更文件引用

确认changelog XML文件中customChange的class属性完全匹配类的全限定名:

<customChange class="com.abl.rjmdb.liquibase.DoNothingChange">
    <!-- 自定义参数(若有) -->
</customChange>

同时检查该类已正确编译到target/classes目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:33:10