java - 使用多模块 Maven 应用程序编译 grpc

标签 java maven grpc grpc-java

我的架构如下。

两台服务器

moduleA/src/main/resources/fileA.proto

moduleB/src/main/resources/fileB.proto

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

service/src/main

问题:我的 moduleA 中有以下 POM,但它没有生成 stub 。

<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>

最佳答案

原型(prototype)文件位置应为src/main/proto/。 另外,protobuf 的版本似乎不匹配。在依赖关系中,protobuf 版本是 3.6.1,其中 protoc 插件使用的是 3.9.0。

关于java - 使用多模块 Maven 应用程序编译 grpc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417269/

相关文章:

JavaFX 在 jdk7 上工作正常,但在 jdk8 上不行 : Not on FX application thread

maven - 如何从命令行禁用maven-assembly-plugin插件?

android - Eclipse:为什么以及何时在使用 Maven 项目时将库添加到构建路径而不会有有缺陷的 Eclipse 项目?

java - Ubuntu中如何配置环境变量?

python - BigTable 和 gRPC - 内存泄漏,如何解决?

java - Spring 任务执行器 :How to get notifed when all task complete execution and also if they dont in some time slot

java - 如何通过子文档或数组检索文档?

java - 是否有可能(以及如何)改变 G-WAN 处理请求的方式?

reactjs - 使用 grpc 流在反序列化响应时失败

swift - Google Cloud Storage 是否有 gRPC 端点?