FlinkCDC2.4和Flink1.13版的guava冲突问题怎么解决
在使用FlinkCDC2.4和Flink1.13时,可能会遇到Guava版本冲突问题。这是因为Flink和FlinkCDC可能依赖于不同版本的Guava库。解决这种依赖冲突的常见方法是通过使用 Maven 的 dependencyManagement 或 dependencyExclusions 来强制使用特定版本的Guava库。
dependencyManagement
dependencyExclusions
你可以在你的项目的 pom.xml 文件中排除不需要的Guava依赖,只保留一个版本。以下是一个示例:
pom.xml
<dependencies> <!-- Flink dependencies --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>1.13.0</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients_2.11</artifactId> <version>1.13.0</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> <!-- FlinkCDC dependencies --> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-cdc-connectors</artifactId> <version>2.4.0</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加Guava的单独依赖,确保所有组件使用相同版本 --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1-jre</version> </dependency> </dependencies>
通过 dependencyManagement 元素,确保所有模块都使用相同版本的Guava:
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1-jre</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Flink dependencies --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>1.13.0</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients_2.11</artifactId> <version>1.13.0</version> </dependency> <!-- FlinkCDC dependencies --> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-cdc-connectors</artifactId> <version>2.4.0</version> </dependency> </dependencies>
在这个配置中,dependencyManagement 元素确保整个项目(包括所有子模块)使用指定版本的Guava。
通过排除冲突的依赖并指定一个统一的Guava版本,你可以解决FlinkCDC2.4和Flink1.13之间的Guava版本冲突问题。上面的示例展示了如何在 pom.xml 文件中配置这些依赖,以确保兼容性和避免冲突。