我计划在基于Scala的项目中使用Avro架构(使用sbt
构建),并且我正在尝试找出在构建远程jar时使用基于Avro的类的正确方法我的项目(使用sbt assembly
)。
以下是我想到的步骤列表:
(a)将avro
架构文件放在src/main/avro
(b)从架构文件中生成java/scala
个类到src/main/java
或src/main/scala
(c)生成脂肪罐。
问题
(i)完成步骤(b)的正确方法是什么?我注意到Apache Avro项目提供了一个名为avro-tools-1.8.1.jar的jar,用于从模式文件生成java类。但是,我不确定如何在基于sbt的工作流中使用此jar文件。
(ii)我注意到的另一个选择是有第三方sbt插件(例如:sbt-avrohugger,scavro,sbt-avro等。是否有推荐的sbt插件?由于这些是第三方插件,我无法确定哪一个是最好的。
答案 0 :(得分:3)
我目前正在使用: 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