我正在尝试使用生成实现
SpecificRecord
的 Scala 案例类
sbt-avrohugger。当我有一个干净的石板并且我拥有的只是 src/main/avro 中的 avro 文件时,它的工作原理令人惊奇。但我有点坚持为 avro 的增量更改生成 scala 类。我正在使用
addSbtPlugin("com.julianpeeters" % "sbt-avrohugger" % "2.0.0-RC15")
我的 build.sbt 有:
sourceGenerators in Compile += (avroScalaGenerateSpecific in Compile).taskValue
avroSpecificScalaSource in Compile := new java.io.File("/Users/me/project/myschemas/scalacaseclasses")
1)有没有一种方法可以为avro的增量更改生成scala案例类,而不删除现有的scala类(必须这样做,否则当我编译时,它会抱怨
[错误] /Users/me/project/myschemas/scalacaseclasses/com/project/schemas/user/User.scala:6: 用户已定义为案例类 User )。当一切从头开始时,它不会抱怨。
基本上我的情况是我有一堆 avros: 用户、访客和其他一些类别。假设我在第一个版本的用户中有名称和 ID,然后我添加了用户的地址。我想知道是否可以为已经存在的类重新生成案例类。
或者实现此目的的唯一方法是为每个新的 avro 文件生成案例类。
PS:我已经解决了这个问题,其中我循环每个新的 avro 文件并复制新类,但我想看看是否有更好的方法来做到这一点!
以下设置不应发生这种情况:
avroSpecificScalaSource in Compile := (Compile / baseDirectory).value / "myschemas/scalacaseclasses"