Java 我能';t生成gRPC存根类

Java 我能';t生成gRPC存根类,java,spring-boot,grpc,Java,Spring Boot,Grpc,我设法通过.proto文件生成这些类,但它们在构建中 我希望在main中生成类,因为当我要扩展存根时,不可能实现这些方法 看: 文件.proto: syntax = "proto3"; package demogrpcserver.tcp; option java_multiple_files = true; option java_package = "com.example.demogrpcserver"; option java_outer_cl

我设法通过.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路径中自动生成原型文件

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

com.github.os72
ProtocJarMaven插件
3.6.0.1
生成源
跑
直接的
src/main/resources
java-src/proto/
GRPCJava
io.grpc:protoc gen grpc java:1.15.0
src/proto/
否则,使用当前设置,您可以导入原型文件并对其进行扩展。

请参阅gRPC Java自述文件。对于非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 {}
    }
  }
}

您还可以查看。

您可以使用protoc工具在任何地方生成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

您可以找到更多信息

Nice。进入Gradle?实现组:“com.github.os72”,名称:“ProtocJarMaven插件”,版本:“3.11.4”,我的应用程序配置了Gradle。你知道我是如何在gradle中应用这个设置的吗?希望这对@devr有所帮助,我为gradle找到了一个