我在需要访问 FileDescriptorSet 的项目中使用 scalapb。除了所有其他类文件之外,有没有办法让 scalapb 生成 .desc 文件?或者是否有某种编程方式从已经生成的内容中获取 FileDescriptorSet?
1 回答
3
是的,对于这两个问题。
如果您使用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。对于每个 proto 文件,ScalaPB 生成一个 Scala 对象scalaDescriptor
(javaDescriptor
如果这样更方便的话)。描述符包含它们的依赖项列表,这些依赖项也是FileDesciptor
s - 您可以遍历该树结构并构建一个FileDescriptor
s 列表,该列表本质上是一个FileDescriptorSet
.
于 2018-10-04T01:44:25.743 回答