使用scalapb生成文件描述符集(.desc)

时间:2018-10-03 13:39:44

标签: scalapb

我在需要访问FileDescriptorSet的项目中使用scalapb。除了所有其他类文件,是否有办法让scalapb生成.desc文件?还是有某种编程方式可以从已经生成的内容中获取FileDescriptorSet?

1 个答案:

答案 0 :(得分:1)

是的,两个问题都

如果您使用的是sbt-protoc,则可以在SBT文件中具有以下定义:

PB.protocOptions in Compile := Seq(
    "--descriptor_set_out=" + 
        (baseDirectory in Compile).value.getParentFile / "src" / "main" / "resources" /"out.desc"
)

一个警告是您必须自己创建src/main/resources,否则会出现错误。生成为resourceManaged可能更好(这也需要提前创建目录,因为protoc不会这样做)

您还可以在运行时构建FileDescriptorSet。对于每个原型文件,ScalaPB都会使用scalaDescriptor(如果更方便,也可以javaDescriptor)生成一个Scala对象。描述符包含它们也是FileDesciptor的依赖关系的列表-您可以遍历树结构并构建FileDescriptor的列表,本质上是FileDescriptorSet