如何为AWS KDA Flink应用制作含指定依赖的Fat Jar?
打包Flink依赖Jar为Fat Jar的方法
方法一:使用Maven(常用且配置简单)
- 新建一个空的Maven项目(不需要编写任何Java代码),在项目根目录创建
pom.xml文件,填入以下配置:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="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>com.your.group</groupId> <artifactId>flink-deps-fatjar</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <dependencies> <!-- 引入所需的三个Flink依赖 --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-s3-fs-hadoop</artifactId> <version>1.15.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-parquet</artifactId> <version>1.15.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-s3-fs-presto</artifactId> <version>1.15.2</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <!-- 用maven-shade-plugin打包成Fat Jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <finalName>flink-deps-1.15.2-fat</finalName> <!-- 排除签名文件避免冲突 --> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
- 确保本地安装了Maven,在项目根目录执行命令:
mvn clean package
- 执行完成后,
target目录下会生成你需要的Fat Jar。
方法二:使用Gradle
- 新建空的Gradle项目,在根目录创建
build.gradle文件,填入以下配置:
plugins { id 'java' id 'com.github.johnrengelman.shadow' version '7.1.2' // Shadow插件用于打包Fat Jar } group = 'com.your.group' version = '1.0.0' repositories { mavenCentral() } dependencies { implementation 'org.apache.flink:flink-s3-fs-hadoop:1.15.2' implementation 'org.apache.flink:flink-sql-parquet:1.15.2' implementation 'org.apache.flink:flink-s3-fs-presto:1.15.2' } shadowJar { archiveBaseName = 'flink-deps-1.15.2-fat' // 自定义Jar名称 exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA' // 排除签名文件 } // 让build任务自动触发shadowJar打包 build.dependsOn shadowJar
- 安装Gradle后,在项目根目录执行:
./gradlew clean build
- 生成的Fat Jar会存放在
build/libs目录下。
注意事项
- 若部署到KDA后出现类冲突,可在打包配置中排除KDA环境已自带的Flink核心依赖(比如
org.apache.flink:flink-core等)。 - 打包完成后,将Fat Jar上传至S3,再在KDA应用配置中指定该Jar作为依赖即可。
内容的提问来源于stack exchange,提问作者piby180
相关产品推荐
相关产品推荐

