将 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/java
或 src/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
我计划在基于 Scala 的项目(使用 sbt
构建)中使用 Avro 模式,并且我正在尝试找出包含基于 Avro 的正确方法 类在从我的项目构建一个 far jar 时(使用 sbt assembly
)。
以下是我想到的步骤列表:
(a) 将 avro
架构文件放入 src/main/avro
(b) 从架构文件生成 java/scala
类 到 src/main/java
或 src/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