我无法生成 gRPC 存根 类

I can't generate the gRPC stubs classes

我设法通过 .proto 文件生成了 类,但它们在构建中。

我希望 类 在 main 中生成,因为当我要扩展存根时,无法实现这些方法。

看:

文件.proto:

syntax = "proto3";

package demogrpcserver.tcp;

option java_multiple_files = true;
option java_package = "com.example.demogrpcserver";
option java_outer_classname = "tcp";

service TCPService {
  rpc execute(TCPMonitorRequest) returns (TCPMonitorResponse);
}

message TCPMonitorRequest {
  string socketOpen = 1;
  string messageType = 2;
}

message TCPMonitorResponse {
  bool success = 1;
  string txId = 2;
}

.proto 文件在主文件夹中。

有谁知道怎么解决吗?

您可以在 pom 文件中使用插件在 src 路径中自动生成 proto 文件。

<plugin>
            <groupId>com.github.os72</groupId>
            <artifactId>protoc-jar-maven-plugin</artifactId>
            <version>3.6.0.1</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <includeMavenTypes>direct</includeMavenTypes>

                        <inputDirectories>
                            <include>src/main/resources</include>
                        </inputDirectories>

                        <outputTargets>
                            <outputTarget>
                                <type>java</type>   <outputDirectory>src/proto/</outputDirectory>
                            </outputTarget>
                            <outputTarget>
                                <type>grpc-java</type>
                                <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.15.0</pluginArtifact>
                            <outputDirectory>src/proto/</outputDirectory>
                            </outputTarget>
                        </outputTargets>
                    </configuration>
                </execution>
            </executions>
        </plugin>

否则,您可以使用当前设置导入原型文件并对其进行扩展。

请参阅 gRPC Java 自述文件的 Generated Code section。对于非 Android Gradle 构建,您将使用:

plugins {
    id 'com.google.protobuf' version '0.8.15'
}

protobuf {
  protoc {
    artifact = "com.google.protobuf:protoc:3.12.0"
  }
  plugins {
    grpc {
      artifact = 'io.grpc:protoc-gen-grpc-java:1.36.0'
    }
  }
  generateProtoTasks {
    all()*.plugins {
      grpc {}
    }
  }
}

你也可以看看grpc-java examples

您可以使用协议工具在任何您想要的地方生成您的 Java 类

protoc \
  -I PATH_TO_YOUR_PROTOS \
  --java_out=PATH_TO_JAVA_LOCALTION \
  PROTO_FILE_NAME_THAT_WILL_BE_IN_$PATH_TO_YOUR_PROTOS

protoc \
  -I $PATH_TO_YOUR_PROTOS \
  --java_out=$PATH_TO_JAVA_LOCALTION \
  --plugin=protoc-gen-grpc-java=/usr/local/bin/protoc-gen-grpc-java \
  PROTO_FILE_NAME_THAT_WILL_BE_IN_$PATH_TO_YOUR_PROTOS

正在安装 protoc 和 protoc-grpc-java 插件

PROTOC_VERSION="3.12.0"
JAVA_GEN_VERSION="3.7.1"
JAVA_GRPC_GEN_VERSION="1.24.0"


## Protobuf compiler
RUN apt-get update && \
        apt-get install -y unzip && \
        wget https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-linux-x86_64.zip && \
        unzip protoc-$PROTOC_VERSION-linux-x86_64.zip -d /usr/local/ && \
        rm -rf protoc-$PROTOC_VERSION-linux-x86_64.zip

# Protobuf Java
RUN curl https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.27.2/protoc-gen-grpc-java-1.27.2-linux-x86_64.exe -o  /usr/local/bin/protoc-gen-grpc-java && \
    chmod +x /usr/local/bin/protoc-gen-grpc-java

您可以找到更多信息here