美文网首页
maven插件编译proto文件(Java篇)

maven插件编译proto文件(Java篇)

作者: DuffyHuang | 来源:发表于2019-04-29 13:07 被阅读0次

    Idea+protobuf-maven-plugin插件编译proto文件,自动生成客户端和服务端代码

    首先,定义test.proto文件,官网样例如下

    syntax = "proto3";//请在非空非注释的第一行指定当前文件使用的是proto3的语法,默认proto2
    package grpc;//package与java_package有些不同,java_package是定义编译生成的java文件所在的目录,而package是对应的java类的命名空间
    option java_package = "com.diy.vcp.grpc.core";
    option java_outer_classname = "HelloWorldServiceProto";//要生成Java类的名称
    option java_multiple_files = true;//编译后会生成多个Message类,并没有被包含在HelloWorldServiceProto.java文件中,反之,生成单一HelloWorldServiceProto.java文件
    //服务端接口类
    service Greeter {
      rpc SayHello (HelloRequest) returns (HelloReply) {} //服务端接口方法
    }
    //请求参数 基于序号的协议字段映射,所以字段可以乱序,可缺段
    message HelloRequest {
      string name = 1;
      string sex = 2;
    }
    //响应参数
    message HelloReply {
      string message = 1;
    }
    

    然后,准备好maven工程mock-grpc,pom.xml添加编译proto文件的插件protobuf-maven-plugin

    <build>
            <extensions>
                <extension>
                    <groupId>kr.motd.maven</groupId>
                    <artifactId>os-maven-plugin</artifactId><!--引入操作系统os设置的属性插件,否则${os.detected.classifier} 操作系统版本会找不到 -->
                    <version>1.5.0.Final</version>
                </extension>
            </extensions>
            <plugins>
                <!--添加编译proto文件的编译程序和对应的编译插件-->
                <plugin>
                    <groupId>org.xolstice.maven.plugins</groupId>
                    <artifactId>protobuf-maven-plugin</artifactId>
                    <version>0.5.1</version>
                    <configuration>
                        <protocArtifact>com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}</protocArtifact>
                        <pluginId>grpc-java</pluginId>
                        <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.14.0:exe:${os.detected.classifier}</pluginArtifact>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>
                                <goal>compile-custom</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    最后,可以在maven projects视图中选择 protobuf:compile命令执行

    protobuf:compile //编译消息对象
    protobuf:compile-custom //依赖消息对象,生成接口服务

    也可以使用通过终端Terminal执行mvn命令,但是必须提前安装好protoc.exe

    mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.0.0 -Dclassifier=windows-x86_64} -Dpackaging=exe -Dfile=D:\protobuf\protoc.exe

    mvn protobuf:compile
    mvn protobuf:compile-custom

    附工程目录结构

    20190429125905.png
    参考文档
    通信协议之Protocol buffer(Java篇)

    相关文章

      网友评论

          本文标题:maven插件编译proto文件(Java篇)

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