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. Это в основном влечет за собой два основных шага:
Определите один или несколько дескрипторов сборки и сохраните их в
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 (коннекторов, преобразователей, преобразователей) может быть значительно упрощена в ближайшее время.
После ответа Константина, как упаковать банки.
Оставшаяся проблема заключалась в том, что при указании plugin.path=/abc
в KafkaConnect
конфиг, надо быть осторожным.
Вы можете либо положить fat jar
как это:
/abc/fatjar.jar
Или вы должны создать другую папку в abc
и поместите все связанные банки в эту папку следующим образом:
/abc/my-connector-a/connector.jar
/abc/my-connector-a/connector-dependency.jar
...
Как и в моем случае, он рассматривал банки как отдельные плагины.