Kafka Connector - Упаковочные банки

ВОПРОС

Я не профессионал Maven, и я застрял, пытаясь упаковать Kafka Connector. Есть два варианта упаковки:

  • Либо вы создаете папку с jar-файлом, содержащим соединитель + все jar-файлы зависимостей - все jaf-файлы, относящиеся к kafka
  • Или создайте толстый флягу со всеми зависимостями (и я также предполагаю, что без фишек, специфичных только для kafka, но это не указано в документации).

Я следую за документами на слитной веб-странице, и этот соединитель, который я пытаюсь упаковать, - это один на github.

После клонирования репозитория git я попробовал следующее: mvn clean package, Но это, кажется, создает только одну банку оригинального проекта с зависимостями в mvn кеш (~/.m2/repository/).

Google также имеет ссылку на то, как создать толстый 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в основном этот класс здесь, который реализует Connector,

Но когда я пытаюсь запустить соединитель с командой выше, я получаю ошибку

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

Это дает огромный список со всеми доступными плагинами, но моего там нет.

2 ответа

Решение

В настоящее время простой способ упаковки вашего соединителя с помощью 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 (коннекторов, преобразователей, преобразователей) может быть значительно упрощена в ближайшее время.

После ответа Константина, как упаковать банки.

Оставшаяся проблема заключалась в том, что при указании plugin.path=/abc в KafkaConnect конфиг, надо быть осторожным.

Вы можете либо положить fat jar как это:

/abc/fatjar.jar

Или вы должны создать другую папку в abc и поместите все связанные банки в эту папку следующим образом:

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

Как и в моем случае, он рассматривал банки как отдельные плагины.

Другие вопросы по тегам