将 avro 集成到 sbt 工作流程中

Integrating avro into sbt workflow

我计划在基于 Scala 的项目(使用 sbt 构建)中使用 Avro 模式,并且我正在尝试找出包含基于 Avro 的正确方法 类在从我的项目构建一个 far jar 时(使用 sbt assembly)。

以下是我想到的步骤列表:

(a) 将 avro 架构文件放入 src/main/avro

(b) 从架构文件生成 java/scala 类 到 src/main/javasrc/main/scala

(c) 生成 fat jar。

问题

(i) 完成步骤 (b) 的正确方法是什么?我注意到 Apache Avro 项目提供了一个名为 avro-tools-1.8.1.jar 的 jar 来从模式文件生成 java 类。但是,我不确定如何在基于 sbt 的工作流程中使用这个 jar 文件。

(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

要生成 fat jar:

sbt assembly