Я планирую использовать схемы Avro в моем проекте на основе Scala (построенном с использованием sbt
), и я пытаюсь выяснить правильный способ включения классов, основанных на Avro, при построении далекой банки из моего проекта (с использованием sbt assembly
),
Ниже приведен список шагов, которые я имел в виду:
(a) Поместите файлы схемы avro
в src/main/avro
(b) Создание классов java/scala
из файлов схемы в src/main/java
или src/main/scala
(c) Генерировать жировую банку.
Вопросов
(i) Каким будет правильный способ сделать шаг (б)? Я заметил, что проект Apache Avro предоставляет банку с именем avro-tools-1.8.1.jar для создания классов Java из файлов схемы. Однако я не уверен, как этот файл jar можно использовать в рабочем процессе на основе sbt.
(ii) Еще один вариант, который я заметил, - это сторонние плагины sbt (например: sbt-avrohugger, scavro, sbt-avro и т.д.). Рекомендуется ли использовать sbt-плагин? Поскольку это сторонние плагины, я не мог быть уверен, какой из них лучше.
В настоящее время я использую: sbt-avro
Моя конфигурация приведена ниже в build.sbt
:
seq(sbtavro.SbtAvro.avroSettings: _*)
(javaSource in avroConfig) := baseDirectory.value / "src/main/java/"
(stringType in avroConfig) := "String"
Чтобы сгенерировать файл java вручную:
sbt avro:generate
Чтобы создать жировую банку:
sbt assembly