首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件级选项设置为scalapb项目

将文件级选项设置为scalapb项目
EN

Stack Overflow用户
提问于 2021-04-19 15:57:26
回答 1查看 307关注 0票数 0

我使用ScalaPB (0.11.1版)和插件sbt(1.0.3版)在Scala2.12中使用ProtocolBuffers编译一个旧项目。读取文档时,我希望将preserve_unknown_fields文件属性设置为false。但我的问题是,在哪里?我需要在哪里设置这个旗子?在.proto文件上?

我还尝试将该标志作为包作用域选项包括在内,方法是在我的另一个.proto文件旁边创建一个.proto文件,其内容如下(因为它是指定的这里):

代码语言:javascript
复制
import "scalapb/scalapb.proto";

package eur.astrata.eu.bigdata.tpms.protobuf;

option (scalapb.options) = {
  preserve_unknown_fields: false
};

但是,在试图编译时,我会得到以下错误:

代码语言:javascript
复制
[libprotobuf WARNING T:\src\github\protobuf\src\google\protobuf\compiler\parser.cc:648] No syntax specified for the proto file: package.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.)
scalapb/scalapb.proto: File not found.
package.proto:1:1: Import "scalapb/scalapb.proto" was not found or had errors.

我在一开始也尝试过使用syntax = "proto3";,但是它不起作用。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-20 05:41:53

来自医生们

如果您正在使用sbt并导入scalapb/scalapb.proto之类的原型,或者像google/protobuf/Wrappers.proto这样的通用协议缓冲区: 在build.sbt中添加以下内容: libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf" 这告诉sbt从这个jar (及其所有依赖项,包括Google的公共原型)中提取原型,并在传递给from的包含路径中提供它们。

重要的是,通过将preserve_unknown_fields设置为false,您将关闭一个protobuf特性,该特性可以在分布式系统的不同部分不运行相同版本的模式时防止数据丢失。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67165338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档