文章目录
1. 引言
问题:非完整包导致缺少依赖
在Flink作业的开发场景中,我们可能会经常使用到很多的一些cdc connector,例如典型的mysql-cdc。一般我们都可以从maven仓库去下载,例如:https://mvnrepository.com/artifact/com.ververica/flink-connector-mysql-cdc/2.0.2
从上面的图片,**可以看到
cdc
的
jar
包是完整的,所以我们的
flink
作业直接引入,一般不会报
NoClassDefException
**,但是,高版本的cdc jar似乎就没有完整包了。
那么如何获取cdc jar的所有依赖呢?下面继续讲解。
2. 解决方案
2.1 方案一:maven-dependency-plugin插件下载依赖
先创建一个空的maven项目,没有任何内容,只有一个pom文件,文件内容如下(注意:只有一个依赖):
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.apache.flink</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>3.1.1-with-dependencies</version><dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>3.1.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.1.2</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><includeScope>runtime</includeScope></configuration></execution></executions></plugin></plugins></build></project>
然后执行如下命令下载:
mvn clean package
构建成功,可以在项目的目录有一个target,里面有一个lib目录,这些就是cdc jar所有的依赖了:
2.1 方案二:maven-shade-plugin插件打包完整jar
pom的内容如下:
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.apache.flink</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>3.1.1-with-dependencies</version><dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-mysql-cdc</artifactId><version>3.1.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><outputFile>${project.build.directory}/${project.artifactId}-with-dependencies.jar</outputFile></configuration></execution></executions></plugin></plugins></build></project>
同样执行如下命令:
mvn clean package
在本地,也能看到它的体积是比较大的:
3. 文末
本文主要讲解高版本flink cdc连接其缺少依赖的问题,主要使用“dependency”以及“shade”插件来打包,希望能帮助到大家,谢谢大家的阅读,本文完!
版权归原作者 杨林伟 所有, 如有侵权,请联系我们删除。