Spring Boot+Gradle项目执行Liquibase迁移遇依赖缺失报错求助
解决Liquibase Gradle任务报错:
Liquibase-core was not found in the liquibaseRuntime configuration! 问题原因
Liquibase Gradle插件依赖liquibaseRuntime配置加载核心库与JDBC驱动,你的配置存在以下问题:
- 插件版本过旧,与Gradle 8.5兼容性不足;
- 未将JDBC驱动纳入
liquibaseRuntime配置; - 未让Liquibase访问项目编译后的资源,导致无法读取classpath下的changelog文件。
具体解决方案
1. 升级Liquibase Gradle插件
将插件版本从2.2.0升级到兼容Gradle 8.5的版本(如3.0.1):
plugins { id 'java' id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' id 'org.liquibase.gradle' version '3.0.1' }
2. 修正依赖配置
在dependencies块中,替换原有的liquibase-core实现依赖为liquibaseRuntime配置,同时添加JDBC驱动和项目输出依赖:
dependencies { // 保留原有其他依赖... // 移除重复的postgresql依赖,保留runtimeOnly即可 runtimeOnly 'org.postgresql:postgresql' // 配置Liquibase运行时依赖 liquibaseRuntime 'org.liquibase:liquibase-core' // 由Spring Boot依赖管理自动控制版本 liquibaseRuntime 'org.postgresql:postgresql' liquibaseRuntime sourceSets.main.output // 允许Liquibase读取classpath资源 }
3. 配置Liquibase任务(可选)
在build.gradle中添加Liquibase任务配置,避免与liquibase.properties重复配置:
liquibase { activities { main { changeLogFile 'src/main/resources/db/changelog/db.changelog-master.yaml' url 'jdbc:postgresql://localhost:5431/dml-local-db' username 'user' password 'password' driver 'org.postgresql.Driver' } } }
4. 验证并执行任务
- 执行
gradle dependencies,检查liquibaseRuntime节点下是否包含liquibase-core和postgresql依赖; - 运行Liquibase迁移任务:
./gradlew liquibaseUpdate
额外提示
- 确保
db/changelog/db.changelog-master.yaml文件路径正确(你的项目结构符合要求); spring.liquibase.enabled=true会在应用启动时自动执行迁移,手动执行Gradle任务时建议暂时关闭该配置避免冲突;- 无需手动指定
liquibase-core版本,Spring Boot 3.2.0的依赖管理会自动引入兼容的版本(4.24.0)。
内容的提问来源于stack exchange,提问作者Vladimir Vorozhishchev
相关产品推荐
相关产品推荐

