java - 如何在 Maven 模块之间共享 protobuf 文件?

标签 java maven protocol-buffers grpc-java

我有两个服务 A 和 B,它们放置在不同 maven 模块的 monorepo 中,它们还有包含下一个模块的聚合 pom.xml:

<modules>
    <module>A</module>
    <module>B</module>
</modules>

这两种服务都通过 gRPC 进行通信,并且具有原型(prototype)文件中描述的通用协议(protocol)。 grpc-java manual说,我必须将我的原型(prototype)文件放入 src/main/resourses/proto 文件夹中。 这意味着我必须在两个服务之间复制相同的原型(prototype)文件:

  1. A/src/main/resourses/proto/somefile.proto
  2. B/src/main/resourses/proto/somefile.proto

这实际上是代码重复。 主要问题 - 如何在 monorepo 中的两个 Maven 模块之间共享和编译原型(prototype)文件?

我做了下一个:

  1. 创建了仅包含原型(prototype)文件的独立库。我们称它为 C。
  2. 向 A 和 B 模块添加了 C 依赖项。 聚合的 pom.xml 看起来像:
<modules>
    <module>C</module>
    <module>A</module>
    <module>B</module>
</modules>

对于这种情况,该方法似乎很麻烦,我不想为此使用单独的 maven 模块。 此外,如果我为 B 服务使用不同的语言(java 和 maven 以外的语言),我将面临一个问题。 这个问题有已知的解决方案吗?我可以在没有单独的库/模块的情况下共享原型(prototype)文件吗?任何示例表示赞赏。

最佳答案

我错了

The grpc-java manual says, that I must put my proto files into src/main/resourses/proto folder.

我们可以为grpc-java设置protoSourceRoot配置插入。我们可以指定任何所需的原型(prototype)源文件夹,如下所示:

<protoSourceRoot>${basedir}/../proto</protoSourceRoot>

这意味着不需要单独的 maven 模块和库。

关于java - 如何在 Maven 模块之间共享 protobuf 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71353187/

相关文章:

java - 从文件读入数组

eclipse - 设置项目特定的Maven存储库

java - 将 Artifact 部署到 Nexus 时不允许使用 405 方法

reverse-engineering - 在没有 .proto 文件的情况下解析 Protocol-Buffers

python - 如何在 python 中编程 Protocol Buffer 以通过套接字发送消息

java - Firebase SDK Admin setCredentials 除了静态 JSON 文件

java - 尝试从一组中的一对中检测字符串

java - 在 JVMTI 中重新定义类

java - Maven 分类器空 jar

multithreading - 为什么我在多线程中解析Google Protocol Buffer 的消息时很慢?