GRPC需要的一些配置

1、pom.xml

<dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.22.3</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty-shaded</artifactId>
            <version>1.64.0</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>1.64.0</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>1.64.0</version>
        </dependency>
        <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.7.1</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.6.1</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:3.25.1:exe:${os.detected.classifier}</protocArtifact>
                    
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.64.0:exe:${os.detected.classifier}</pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            </plugins>
    </build>

或者有个这个

<dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-all</artifactId>
      <version>1.46.0</version>
    </dependency>
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.2</version>
    </dependency>

protocArtifact 配置解读

<protocArtifact>com.google.protobuf:protoc:3.25.1:exe:${os.detected.classifier}</protocArtifact>

com.google.protobuf:protoc:3.25.1: 这指定了要使用的protoc(Protocol Buffers的编译器)的版本和坐标。在这里,它引用了Google的protoc版本3.25.1。
exe: 这指定了artifact的类型是“可执行文件”(executable)。这意味着Maven将尝试下载与给定版本相对应的protoc可执行文件。
${os.detected.classifier}: 这是一个Maven属性,它通常在构建时通过插件(如os-maven-plugin)来设置,并根据运行Maven的操作系统来确定合适的分类器(classifier)。例如,它可能是windows-x86_64、macosx-x86_64或linux-x86_64,以便Maven可以下载与当前操作系统兼容的protoc版本。
pluginArtifact 配置

<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.64.0:exe:${os.detected.classifier}</pluginArtifact>

io.grpc:protoc-gen-grpc-java:1.64.0: 这指定了要使用的gRPC Java插件的版本和坐标。该插件用于从.proto文件生成gRPC Java代码。
同样,exe指定了artifact的类型是“可执行文件”。
${os.detected.classifier}的作用与上面相同,确保下载的gRPC Java插件与当前操作系统兼容。
总的来说,这两段配置确保了Maven能够下载与当前操作系统兼容的protoc编译器和gRPC Java插件,并在构建过程中使用它们来从.proto文件生成Java代码。

然后是一个后缀为.proto的文件,注意在这里插入图片描述
注意proto的文件目录要和java的文件目录在同一级,也就是指proto的文件目录是在main的下级

例如hello.proto文件内容

syntax = "proto3";
/ /版本声明,使用Protocol Buffers v3版本
package hello;
option java_package = "io.grpc.aaa";
option java_outer_classname = "HelloProto";
//输出的文件名

service Hello {
  rpc SayHello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}

运行,mvn clean,也就是下面这三步
在这里插入图片描述
之后就可以看到啦
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值