【问题标题】:Generate file descriptor set (.desc) with scalapb使用 scalapb 生成文件描述符集 (.desc)
【发布时间】:2019-03-08 18:18:20
【问题描述】:

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

【问题讨论】:

    标签: scalapb


    【解决方案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。对于每个 proto 文件,ScalaPB 生成一个带有 scalaDescriptor 的 Scala 对象(如果这样更方便,还可以使用 javaDescriptor)。描述符包含它们的依赖项列表,它们也是 FileDesciptors - 您可以遍历该树结构并构建一个 FileDescriptors 列表,它本质上是一个 FileDescriptorSet

    【讨论】:

    • 在极少数情况下,其他人正在寻找一种仅生成 FileDescriptorSet 的方法,sbt-protoc 恰好为此提供了一个生成器:Compile / PB.targets += (PB.gens.descriptorSet -> (Compile / crossTarget).value / "my.fds")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多