美文网首页
Protobuf生成Java代码(命令行)

Protobuf生成Java代码(命令行)

作者: 木木与呆呆 | 来源:发表于2021-10-09 16:59 被阅读0次

    1.说明

    本文介绍Protobuf生成Java代码的方法,
    下载必须的Protobuf工具,
    然后通过命令行,
    把.proto文件生成Java代码。

    2.准备Protobuf工具

    2.1.获取protoc软件

    用于处理proto文件的工具软件,
    用其对proto文件生成消息对象
    和序列化及反序列化的Java实体类。
    下载地址:
    https://repo1.maven.org/maven2/com/google/protobuf/protoc/3.12.0/
    这里下载适配Windows 64位系统的软件:
    protoc-3.12.0-windows-x86_64.exe

    2.2.获取protoc-gen-grpc-java插件

    用于处理rpc定义的插件,
    用其生成针对rpc定义的Java接口。
    下载地址:
    https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.32.1/
    这里下载适配Windows 64位系统的软件:
    protoc-gen-grpc-java-1.32.1-windows-x86_64.exe

    把上面下载的两个文件放到同一个目录下,
    比如C:\developtools\Protobuf。

    3.创建.proto文件

    在Protobuf下新建proto目录,
    在里面创建helloworld.proto文件:

    // 显示声明使用proto3, 否则使用默认的proto2
    syntax = "proto3";
    
    // 生成类的包名
    option java_package = "com.asiainfo.yuwen.grpc.helloworld";
    // 生成类的文件名,否则默认生成的类名为proto文件名的驼峰命名
    option java_outer_classname = "HelloWorldProto";
    // 定义的所有消息、枚举和服务生成对应的多个类文件,而不是以内部类的形式出现
    option java_multiple_files = false;
    
    // greeting服务定义
    service Greeter {
      // sayHello方法,格式为"方法名 请求参数 返回参数"
      rpc SayHello (HelloRequest) returns (HelloReply) {}
      // 另一个sayHello方法
      rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
    }
    
    // 方法请求,包含用户名
    message HelloRequest {
      string name = 1;
    }
    
    // 方法响应,包含响应的消息
    message HelloReply {
      string message = 1;
    }
    

    4.执行命令行

    在Protobuf下新建java目录,
    用于保存生成的Java代码。

    首先生成消息对象:

    protoc-3.12.0-windows-x86_64.exe --java_out=java --proto_path=proto proto/helloworld.proto
    

    然后生成GRPC接口:

    protoc-3.12.0-windows-x86_64.exe --plugin=protoc-gen-grpc-java=protoc-gen-grpc-java-1.32.1-windows-x86_64.exe --grpc-java_out=java --proto_path=proto proto/helloworld.proto
    

    生成目录和文件结果如下:

    Protobuf
    |-- java
    |   `-- com
    |       `-- asiainfo
    |           `-- yuwen
    |               `-- grpc
    |                   `-- helloworld
    |                       |-- GreeterGrpc.java
    |                       `-- HelloWorldProto.java
    |-- proto
    |   `-- helloworld.proto
    |-- protoc-3.12.0-windows-x86_64.exe
    `-- protoc-gen-grpc-java-1.32.1-windows-x86_64.exe
    

    5.进阶使用

    Protobuf生成Java代码的方法,
    不仅可以使用命令行,
    也可以通过Maven的方式,
    更加简介和方便,
    其实Maven底层也是使用的命令行,
    具体方法请参考:
    Protobuf生成Java代码(Maven)

    相关文章

      网友评论

          本文标题:Protobuf生成Java代码(命令行)

          本文链接:https://www.haomeiwen.com/subject/gnwqoltx.html