【问题标题】:Kafka Connector - Packacking jarsKafka 连接器 - 包装罐子
【发布时间】:2018-09-30 15:31:06
【问题描述】:

问题

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

  • 要么生成一个文件夹,其中包含一个 jar,其中包含连接器 + 所有依赖项 jar - 所有特定于 kafka 的 jar
  • 或者构建一个包含所有依赖项的胖 jar(我还假设再次没有特定于 kafka 的 jar,但在文档中没有明确说明)。

我正在关注confluent webpage 上的文档,我要打包的连接器是this one on github

在使用 git 克隆 repo 后,我尝试的是以下mvn clean package。但这似乎只创建了原始项目的一个 jar,其依赖项位于 mvn 缓存 (~/.m2/repository/) 中。

Google 也有关于如何创建胖 jar 的链接,但我需要以某种方式指定要从胖 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 apache-kafka apache-kafka-connect


    【解决方案1】:

    目前,使用 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 插件(连接器、转换、转换器)可能很快会得到显着简化。

    【讨论】:

    • 我更新了问题。陷入另一个错误,尝试使用打包的 jar :/
    • 非常感谢。我会继续关注,我希望它得到简化。
    【解决方案2】:

    按照康斯坦丁的回答如何打包罐子。

    剩下的问题是,在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 当作单独的插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 2011-07-24
      • 2020-08-15
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多