Kafka 连接器 - 包装罐
Kafka Connector - Packacking jars
问题
我不是专家,我在尝试打包 Kafka 连接器时遇到了困难。有两种打包方式:
- 要么生成一个文件夹,其中包含一个包含连接器的 jar + 所有依赖项 jar - 所有 kafka 特定的 jar
- 或者构建一个包含所有依赖项的 fat jar(我也假设再次没有特定于 kafka 的 jar,但它在文档中没有明确说明)。
我正在关注 confluent webpage and the connector I am trying to package is this one on github 上的文档。
在使用 git 克隆存储库后,我尝试的是以下 mvn clean package
。但这似乎只创建了原始项目的一个 jar,其依赖项位于 mvn
缓存 (~/.m2/repository/
).
Google 也有 link 关于如何创建 fat jar
,但我需要以某种方式指定要从 fat jar 中排除的 jar。
谢谢
更新
现在我运行宁:
connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka/connect-cdc-mssql-source.properties
其中 /etc/kafka/connect-standalone.properties
包含以下行:
plugin.path=/shared_win_files
并且 ls -al /shared_win_files
包含以下内容:
kafka-connect-cdc-mssql-0.0.1-SNAPSHOT.jar
并且 jar tvf kafka-connect-cdc-mssql-0.0.1-SNAPSHOT.jar
包含以下内容:
6996 Thu Sep 07 14:47:24 BST 2017 com/github/jcustenborder/kafka/connect/cdc/mssql/MsSqlSourceConnector.class
其中 MsSqlSourceConnector.class
基本上是 this class 这里实现了 Connector
.
但是当我尝试使用上面的命令 运行 连接器时,出现错误
Failed to find any class that implements Connector and which name matches com.github.jcustenborder.kafka.connect.cdc.mssql.MsSqlSourceConnector
它给出了包含所有可用插件的大量列表,但我的不在其中。
目前,使用 Maven 打包连接器的一种简单方法是使用 maven-assembly-plugin。这基本上需要两个主要步骤:
定义一个或多个程序集描述符并将它们保存在src/assembly
下。
文档:http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html
示例:https://github.com/confluentinc/kafka-connect-elasticsearch/blob/master/src/assembly/package.xml
在描述符中,除其他事项外,您可以选择要包含或排除的存档、文件和目录的打包格式,以及有关项目依赖项的特定设置。
在项目的 pom.xml
中包含插件
示例:https://github.com/confluentinc/kafka-connect-elasticsearch/blob/master/pom.xml
这里主要需要你定义maven-assembly-plugin
部分的配置和执行部分。此外,您可以将对特定程序集插件描述符的调用与您可能定义的某些 Maven 配置文件相关联。
最后,请继续关注,因为打包 Kafka Connect 插件(连接器、转换、转换器)可能很快就会大大简化。
按照 Konstantine 的回答如何打包 jar。
剩下的问题是在KafkaConnect
配置中指定plugin.path=/abc
时,你必须要小心。
您可以像这样输入 fat jar
:
/abc/fatjar.jar
或者您必须在 abc
中创建另一个文件夹并将所有相关的 jar 放入该文件夹,如下所示:
/abc/my-connector-a/connector.jar
/abc/my-connector-a/connector-dependency.jar
...
就我而言,它将 jars 视为单独的插件。
问题
我不是专家,我在尝试打包 Kafka 连接器时遇到了困难。有两种打包方式:
- 要么生成一个文件夹,其中包含一个包含连接器的 jar + 所有依赖项 jar - 所有 kafka 特定的 jar
- 或者构建一个包含所有依赖项的 fat jar(我也假设再次没有特定于 kafka 的 jar,但它在文档中没有明确说明)。
我正在关注 confluent webpage and the connector I am trying to package is this one on github 上的文档。
在使用 git 克隆存储库后,我尝试的是以下 mvn clean package
。但这似乎只创建了原始项目的一个 jar,其依赖项位于 mvn
缓存 (~/.m2/repository/
).
Google 也有 link 关于如何创建 fat jar
,但我需要以某种方式指定要从 fat jar 中排除的 jar。
谢谢
更新
现在我运行宁:
connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka/connect-cdc-mssql-source.properties
其中 /etc/kafka/connect-standalone.properties
包含以下行:
plugin.path=/shared_win_files
并且 ls -al /shared_win_files
包含以下内容:
kafka-connect-cdc-mssql-0.0.1-SNAPSHOT.jar
并且 jar tvf kafka-connect-cdc-mssql-0.0.1-SNAPSHOT.jar
包含以下内容:
6996 Thu Sep 07 14:47:24 BST 2017 com/github/jcustenborder/kafka/connect/cdc/mssql/MsSqlSourceConnector.class
其中 MsSqlSourceConnector.class
基本上是 this class 这里实现了 Connector
.
但是当我尝试使用上面的命令 运行 连接器时,出现错误
Failed to find any class that implements Connector and which name matches com.github.jcustenborder.kafka.connect.cdc.mssql.MsSqlSourceConnector
它给出了包含所有可用插件的大量列表,但我的不在其中。
目前,使用 Maven 打包连接器的一种简单方法是使用 maven-assembly-plugin。这基本上需要两个主要步骤:
定义一个或多个程序集描述符并将它们保存在
src/assembly
下。文档:http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html
示例:https://github.com/confluentinc/kafka-connect-elasticsearch/blob/master/src/assembly/package.xml
在描述符中,除其他事项外,您可以选择要包含或排除的存档、文件和目录的打包格式,以及有关项目依赖项的特定设置。
在项目的
中包含插件pom.xml
示例:https://github.com/confluentinc/kafka-connect-elasticsearch/blob/master/pom.xml
这里主要需要你定义
maven-assembly-plugin
部分的配置和执行部分。此外,您可以将对特定程序集插件描述符的调用与您可能定义的某些 Maven 配置文件相关联。
最后,请继续关注,因为打包 Kafka Connect 插件(连接器、转换、转换器)可能很快就会大大简化。
按照 Konstantine 的回答如何打包 jar。
剩下的问题是在KafkaConnect
配置中指定plugin.path=/abc
时,你必须要小心。
您可以像这样输入 fat jar
:
/abc/fatjar.jar
或者您必须在 abc
中创建另一个文件夹并将所有相关的 jar 放入该文件夹,如下所示:
/abc/my-connector-a/connector.jar
/abc/my-connector-a/connector-dependency.jar
...
就我而言,它将 jars 视为单独的插件。