Kafka 连接器 - 包装罐

Kafka Connector - Packacking jars

问题

我不是专家,我在尝试打包 Kafka 连接器时遇到了困难。有两种打包方式:

我正在关注 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。这基本上需要两个主要步骤:

  1. 定义一个或多个程序集描述符并将它们保存在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

    在描述符中,除其他事项外,您可以选择要包含或排除的存档、文件和目录的打包格式,以及有关项目依赖项的特定设置。

  2. 在项目的 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 视为单独的插件。