gpt4 book ai didi

java - 在 Maven 项目之间导入 Protocol Buffer 定义

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:17 26 4
gpt4 key购买 nike

我目前管理几个独立的 Maven 项目,在这些项目中我使用 Protobufs 作为序列化格式并通过网络传输。我正在使用 David Trott 的 maven-protoc plugin在编译时生成代码。

一切都很好,直到我希望这些项目能够相互通信——或者更确切地说,使用彼此的 protobuf。 protobuf 语言有一个“导入”指令,它可以执行我想要的操作,但我面临着让项目 A 导出项目 B 所依赖的“.proto”文件(或可能是某种中间格式?)的挑战。

Maven 为项目提供了一种捆绑资源的方法,但据我所知,这些资源是为了在运行时由代码使用,而不是在编译/源代码生成阶段由目标使用——至少我还没有找到描述我想要实现的目标的文档。

最佳答案

我找到了另一种实现方式,它不涉及任何 Maven 魔法。深入研究 maven-protoc 插件的代码,我发现这是一个受支持的用例——该插件将查找并收集依赖 jar 中的 .proto 文件,并将它们解压缩到一个临时目录中。然后将该目录设置为协议(protocol)调用的导入路径。

所有需要做的就是将 .proto 文件包含在依赖项的包中,我通过将其设为资源来做到这一点:

项目/a/src/main/resources/a.proto

现在在 projects/b/pom.xml 中,添加 'a' 作为常规 Maven 依赖项,然后从 b.proto 导入 a.proto,就像它存在于本地一样:

b.proto:导入“a.proto”;

这并不理想,因为不同项目之间的文件名可能会发生冲突,但这种情况应该很少发生。

关于java - 在 Maven 项目之间导入 Protocol Buffer 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13165333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com