Java 使用多模块maven应用程序编译grpc
我的架构如下所示 两台服务器 moduleA/src/main/resources/fileA.proto moduleB/src/main/resources/fileB.proto 客户端(面向浏览器的服务器端点调用两台服务器以上) 服务/src/main 问题/问题:我的模块A中有以下POM,但它不生成存根Java 使用多模块maven应用程序编译grpc,java,maven,grpc,grpc-java,Java,Maven,Grpc,Grpc Java,我的架构如下所示 两台服务器 moduleA/src/main/resources/fileA.proto moduleB/src/main/resources/fileB.proto 客户端(面向浏览器的服务器端点调用两台服务器以上) 服务/src/main 问题/问题:我的模块A中有以下POM,但它不生成存根 <dependencies> <dependency> <groupId>com.google.protobuf</g
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.6.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.15.1</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.5.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.9.0:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.22.1:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
com.google.protobuf
protobuf java
3.6.1
io.grpc
网状阴影
1.15.1
io.grpc
grpc协议
1.15.1
io.grpc
grpc存根
1.15.1
马文
os maven插件
1.5.0.1最终版本
org.xolstice.maven.plugins
protobuf maven插件
0.5.1
protobuf:protoc:3.9.0:exe:${os.detected.classifier}
GRPCJava
io.grpc:protoc gen grpc java:1.22.1:exe:${os.detected.classifier}
编译
编译自定义
org.apache.maven.plugins
maven编译器插件
3.8.1
1.8
1.8
原型文件位置应为src/main/proto/
。
另外,protobuf的版本似乎不匹配。在依赖关系中,protobuf版本是3.6.1,其中protoc插件使用的是3.9.0。如果您不介意的话,快速提问,在两个单独的模块(或微服务或JAR)之间共享proto文件的正确架构是什么,这两个模块都将部署在不同的机器上,可能在同一台机器上编译两个模块,或者在部署服务器后在另一台机器上编译客户端,在这两台机器之间共享IDL的行业惯例是什么,我是否跨模块复制原型文件并重新生成java代码,我只是想在现实生活中的团队工作场景中绞尽脑汁。在我看来,我可能还必须依赖服务器的jar文件,链接到它并使用实现调用方法,试图弄清楚客户端如何访问服务器的类?@AppDeveloper共享原型文件有些棘手,一些公司没有这个问题,因为他们使用的是像谷歌这样的单一回购协议。这些问题经常出现,但似乎还不是一个好的解决方案。