- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
总的来说,我有一个 protobuf(将其视为一个类)数据类型,它引用另一个 Jar 文件中的另一个 protobuf,该 Jar 文件是我的 POM 文件中的依赖项。这非常适用于 .java 文件,但不幸的是不适用于 protobuf 文件。我能想到的最佳解决方案是告诉 Maven 在某个位置提取这个其他依赖 Jar(包含 proto 文件)文件,然后告诉 Maven 在该位置对所有这些 proto 文件进行 protoc 编译。 las,我不知道如何告诉 Maven 这样做。任何帮助将不胜感激,因为我们使用标准 Jar 文件来捕获我们的原型(prototype)文件。
import "X.proto"; // refers to a proto file in another jar
import "Y.proto";
message A {
repeated X o = 1; // This cant be done
repeated Y e = 2;
}
由于 X 与该文件不在同一个路径中,因此上述操作将不起作用。
最佳答案
我在 Gradle 中找到了解决方案。填写下面的空白并正确指向你的 repo 协议(protocol),你应该能够让下面的工作正常进行。现在,您可以通过其他 jar 文件中的 proto 文件,跨多个项目分层组合 protobuf!
在gradle中,您可以使用以下内容:
// these are your protobuf plugin repositories
buildscript {
repositories {
maven {
url 'WHERE YOUR PROTOBUF PLUGIN EXISTS. e.g. http://maven or MavenCentral()'
}
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'
classpath 'com.google.protobuf:protoc:2.6.1'
}
}
apply plugin: 'com.google.protobuf'
group = "YOUR PACKAGE NAME. e.g. com.x.y"
version = "1.0" // release version
// these are your regular dependencies repositories. This could be
// very similar to the ones in buildscript above.
repositories {
mavenLocal()
}
// this is needed by the plugin and is where teh magic happens. It
// tells protobuf where to extract all the proto files that it finds
// in all the dependency jar files you have
protobuf {
generatedFilesBaseDir="$projectDir/src/"
}
// also magic you need for this protobuf plugin to work
sourceSets {
main {
// this tells the plugin where your project specific
// protofiles are located
proto {
srcDir 'src/main/resources/proto/'
}
java {
srcDir 'src/main/java'
}
}
}
dependencies {
compile 'com.google.protobuf:protobuf-java:2.6.1'
}
关于java - 通过引用其他存储库或项目或 jar 文件中的其他 protobuf 消息,分层组合 Protocol buffers (protobuf) 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37081163/
我试图了解是否有可能采用构成另一个 protobuf 一部分的序列化 protobuf 并将它们合并在一起而不必反序列化第一个 protobuf。 例如,给定一个 protobuf 包装器: synt
正如我最近发现的,我们可以使用两个类 ProtoBuf.Serializer 和 ProtoBuf.Meta.TypeModel 在 protobuf-net 中序列化/反序列化。例如,假设我们有一个
我正在尝试使用 protobuf 序列化我的下面的类,但它因“对象引用”错误而失败。更多详情如下。通过查看错误详细信息,您知道会出现什么问题吗?注意:我的用户对象太大了,它有太多的子对象和属性。所以不
我想识别要反序列化的文件是否是protobuf序列化的。这是因为我想提供不止一种选项来为用户序列化和反序列化文件。我正在使用 protobuf.net 序列化为 protobuf 格式。 最佳答案 不
我已经使用位于 https://protogen.marcgravell.com/ 的工具构建了我的 C# 类来自 https://developers.google.com/transit/gtfs
有一个通过 UDP 接受消息的 Go 服务器。使用这种设计,它只能扫描一种特定类型的实体,world.Entity . for { buf := make([]byte, 10
比如我想序列化和反序列化System.Drawing.Font这是不可变的,不能更改以适应 protobuf-net 约定。一般来说,是否可以在 protobuf-net 中编写某种“自定义”序列化程
我开始用 protobuf 2.2.0 构建一个应用程序,因为它是最新的。现在我正在考虑升级到最新的 protobuf 2.4.0a。 如果我这样做,对于同一架构,一个版本的应用程序生成的消息是否仍然
在我从 BinaryFormatter 切换到 protobuf-net 的过程中, 我在序列化集合时观察到了差异。 在下面的代码示例中,反序列化(protobuf-net v2r470)返回 如果在
知道正在发送的 protobuf 消息类型的 API 是什么? 例如,我使用以下方法获取 SendNameMessage 对象。 SendNameMessage sendNameObj = Seria
我在我们的一个项目中使用 protobuf-net 来序列化/反序列化一大组同类对象。它运行良好,速度非常快。不过只有一个问题。反序列化时是否可以使用 linq(或任何其他机制)指定过滤条件,以便加载
我正在尝试使用 protobuf-net 序列化一些对象,但不幸的是他们自由地使用了 DateTimeOffset , protobuf-net 尚不支持。这导致了很多: No serializer
我在 ionic2 项目中使用 protobuf.js。我有一个有效的 .proto 文件,我首先将其转换为静态 javascript 文件: pbjs -t static databaseapi.p
我通过 vcpkg vcpkg install protobuf:x64-windows 安装了 protobuf .显然它安装了最新版本(3.6.1)。对于我需要版本<=3.5.1的项目。有没有办法
我有以下类(class):- [Serializable] [DataContract(Name = "StateValueWrapper")] public class StateValueWrap
protobuf net 似乎不支持列表/数组的 AsReference 以及列表/数组内对象的 AsReference。这会在最终的 v2 中得到支持吗? [ProtoMember(1, AsRef
我正在使用 protobuf-net 来序列化和反序列化我的消息。我的消息还包含可以为空的字符串。但是,当我在另一侧反序列化它们时,我得到空字符串 ("")。 根据谷歌文档,空字符串中字符串类型的默认
我已经阅读了有关继承的各种帖子,并且 Protocol Buffer 不支持继承。我不想继承 Protocol Buffers 消息,而是继承,这样我就可以轻松处理我的所有 Protocol Buff
我知道带有 protobuf.net 的列表不支持 AsReference,因此我尝试了解决此限制的方法。我创建了一个名为 SuperList 的自定义列表,其中包含包装在 SuperListItem
我正在尝试使用 ProtoMember 中的 AsReference 选项进行递归引用。如果我使用公共(public)构造函数创建 AnOwner 然后序列化/反序列化,AnOwner.Data 变为
我是一名优秀的程序员,十分优秀!