Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多模块maven应用程序编译grpc_Java_Maven_Grpc_Grpc Java - Fatal编程技术网

Java 使用多模块maven应用程序编译grpc

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

我的架构如下所示

两台服务器

moduleA/src/main/resources/fileA.proto

moduleB/src/main/resources/fileB.proto

客户端(面向浏览器的服务器端点调用两台服务器以上)

服务/src/main

问题/问题:我的模块A中有以下POM,但它不生成存根

<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共享原型文件有些棘手,一些公司没有这个问题,因为他们使用的是像谷歌这样的单一回购协议。这些问题经常出现,但似乎还不是一个好的解决方案。