2017-09-06 7 views
1

QUESTIONカフカコネクタ - Packacking瓶

私はMavenのプロではないと私はカフカコネクタをパッケージ化しようとして捕まってしまいました。すべてカフカ固有のjarは

  • またはすべてと脂肪のjarファイルを構築する -

    • どちらのあなたは、コネクタ+すべての依存関係のjarファイルが含まれているjarファイルとフォルダを作成:あり、それをパッケージ化するための2つのオプションがあります(また、カフカ固有のjarファイルがなくても前提としていますが、ドキュメントでは明示的ではありません)。

    私はconfluent webpageの文書に従っています。パッケージしようとしているコネクタはthis one on githubです。

    gitでリポジトリをクローンした後、私が試したのは、次のとおりですmvn clean package。しかしこれは、mvnキャッシュ(~/.m2/repository/)の依存関係を持つ元のプロジェクトの単一のjarファイルを作成するようです。

    Googleは脂肪の作り方についてのリンクも持っていますが、私はfat jarから除外するjarを指定する必要があります。

    plugin.path=/shared_win_files 
    

    そしてls -al /shared_win_files contai:/etc/kafka/connect-standalone.propertiesに次の行が含まれて

    connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka/connect-cdc-mssql-source.properties 
    

    を:私は実行している今

    おかげ

    UPDATE NS、以下:

    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は基本的にConnectorを実装し、ここthis classです。

    しかし、私は上記のコマンドでコネクターを実行しようとすると、私はエラー

    Failed to find any class that implements Connector and which name matches com.github.jcustenborder.kafka.connect.cdc.mssql.MsSqlSourceConnector 
    

    を取得するには、使用可能なすべてのプラグインとの大規模なリストが得られますが、鉱山があるではありません。

    SOLUTION

    だから私は、jarファイルをパッケージ化する方法Konstantineの答えを追いました。残りの問題はをKafkaConnectに指定するときは注意が必要です。

    あなたはこのようにfat jarを置くことができ、次のいずれか

    /abc/fatjar.jar 
    

    それとも、abcで別のフォルダを作成し、このようにそのフォルダに関連するすべてのjarファイルを配置する必要があります。同様に

    /abd/my-connector-a/connector.jar 
    /abd/my-connector-a/connector-dependency.jar 
    ... 
    

    私の場合、別のプラグインとしてjarを扱っていました。

  • 答えて

    2

    現在、コネクタをmavenに簡単にパッケージ化するには、maven-assembly-pluginを使用します。

    1. 一の以上のアセンブリ記述子を定義し、src/assemblyの下でそれらを保存します。これは基本的に2つの主要なステップを伴います。

      ドク: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プラグイン(コネクタ、トランスフォーム、コンバーター)のパッケージ化がすぐに大幅に簡素化されるため、調整しておいてください。

    +0

    質問を更新しました。パッケージ化されたジャーを使用しようとすると、別のエラーに遭遇しました:/ – eddyP23

    +0

    ありがとうございます。私は調整されたままになります、私はそれが簡素化されることを望みます。 – eddyP23