我有两个服务 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)文件:
A/src/main/resourses/proto/somefile.proto
B/src/main/resourses/proto/somefile.proto
这实际上是代码重复。 主要问题 - 如何在 monorepo 中的两个 Maven 模块之间共享和编译原型(prototype)文件?
我做了下一个:
- 创建了仅包含原型(prototype)文件的独立库。我们称它为 C。
- 向 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/