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

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


        
            
                kr.motd.maven
                os-maven-plugin
                1.5.0.Final
            
        
        
            
            
                org.xolstice.maven.plugins
                protobuf-maven-plugin
                0.5.1
                
                    com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}
                    grpc-java
                    io.grpc:protoc-gen-grpc-java:1.14.0:exe:${os.detected.classifier}
                
                
                    
                        
                            compile
                            compile-custom
                        
                    
                
            
        
    

最后,可以在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篇))