如何实现Liquibase与Cassandra 5协同工作?解决依赖冲突
可行方案:Liquibase 适配 Cassandra 5 解决依赖冲突问题
问题概述
现有Liquibase官方Cassandra教程文档过时,推荐的依赖库会引发冲突;直接使用Cassandra官方提供的shaded驱动也无法正常运行,因版本冲突导致类缺失或加载异常,核心难点在于库重命名、迁移及shaded版本导致的依赖追踪困难。
核心解决步骤
1. 选用兼容的非Shaded Cassandra Java Driver
Cassandra 5需搭配4.17.x及以上版本的非Shaded官方Java Driver,避免Shaded版本的类重命名导致Liquibase无法识别。
2. 对齐Liquibase核心与扩展版本
确保liquibase-core和liquibase-cassandra扩展版本完全一致,避免版本不兼容引发的API差异。
3. 排除冲突依赖
主动排除Liquibase扩展自带的旧版Cassandra Driver、Guava、Netty等易冲突依赖,强制使用适配Cassandra 5的版本。
具体依赖配置示例
Maven 配置
<dependencies> <!-- Liquibase 核心库,使用最新稳定版 --> <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0</version> </dependency> <!-- Liquibase Cassandra 扩展,排除冲突依赖 --> <dependency> <groupId>org.liquibase.ext</groupId> <artifactId>liquibase-cassandra</artifactId> <version>4.25.0</version> <exclusions> <exclusion> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-core</artifactId> </exclusion> <exclusion> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-query-builder</artifactId> </exclusion> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> <!-- 适配Cassandra 5的官方Java Driver --> <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-core</artifactId> <version>4.17.0</version> </dependency> <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-query-builder</artifactId> <version>4.17.0</version> </dependency> <!-- 解决Netty版本冲突,使用Driver兼容版本 --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.94.Final</version> <scope>runtime</scope> </dependency> </dependencies>
Gradle 配置
dependencies { implementation 'org.liquibase:liquibase-core:4.25.0' implementation('org.liquibase.ext:liquibase-cassandra:4.25.0') { exclude group: 'com.datastax.oss', module: 'java-driver-core' exclude group: 'com.datastax.oss', module: 'java-driver-query-builder' exclude group: 'com.google.guava', module: 'guava' } implementation 'com.datastax.oss:java-driver-core:4.17.0' implementation 'com.datastax.oss:java-driver-query-builder:4.17.0' runtimeOnly 'io.netty:netty-all:4.1.94.Final' }
命令行Liquibase 手动配置
如果使用命令行工具:
- 下载上述版本的
liquibase-core.jar、liquibase-cassandra.jar、java-driver-core.jar、java-driver-query-builder.jar及netty-all.jar - 将所有jar包放入Liquibase的
lib目录 - 删除
lib目录中旧版的Cassandra Driver、Guava、Netty相关jar包,避免冲突
关键注意事项
- 禁止使用Cassandra官方的Shaded驱动:Shaded版本会重命名
com.datastax.oss下的类,导致Liquibase扩展无法找到对应API - 版本对齐优先:所有依赖的次要版本尽量保持一致,避免跨版本的类兼容性问题
- 依赖冲突排查:可使用
mvn dependency:tree(Maven)或gradle dependencies(Gradle)命令查看依赖树,定位冲突源
内容的提问来源于stack exchange,提问作者Martin Mucha
相关产品推荐
相关产品推荐

