idea集成protobuf

idea集成protobuf

    • idea安装protobuf插件
    • 编写pom.xml
    • 编写proto文件,用idea插件生成源码
    • 测试

idea安装protobuf插件

idea集成protobuf_第1张图片

编写pom.xml

<protobuf-java.version>3.5.1protobuf-java.version>
<protobuf-javanano.version>3.1.0protobuf-javanano.version>

<dependency>
            <groupId>com.google.protobufgroupId>
            <artifactId>protobuf-javaartifactId>
            <version>${protobuf-java.version}version>
        dependency>
        <dependency>
            <groupId>com.google.protobuf.nanogroupId>
            <artifactId>protobuf-javananoartifactId>
            <version>${protobuf-javanano.version}version>
        dependency>
  
<build>
        <extensions>
            <extension>
                <groupId>kr.motd.mavengroupId>
                <artifactId>os-maven-pluginartifactId>
                <version>1.6.2version>
            extension>
        extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.pluginsgroupId>
                <artifactId>protobuf-maven-pluginartifactId>
                <version>0.6.1version>
                <configuration>
                    <pluginId>javapluginId>
                    <protocArtifact>com.google.protobuf:protoc:${protobuf-java.version}:exe:${os.detected.classifier}protocArtifact>
                    <protoSourceRoot>${project.basedir}/src/main/protoprotoSourceRoot>
                    <outputDirectory>${project.build.sourceDirectory}outputDirectory>
                    <clearOutputDirectory>falseclearOutputDirectory>
                configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile-javananogoal>
                        goals>
                    execution>
                executions>
            plugin>
    plugins>
<build>

添加protobuf-maven-plugin,注意要设置下protoSourceRootoutputDirectorygoal,protoSourceRoot代表proto源文件所在目录,outputDirectory代表生成的java文件的存放路径,我们把生成好的代码直接放在src目录下面, goal代表我们要用哪一个命令来生成java源文件。

编写proto文件,用idea插件生成源码

//Person.proto
syntax = "proto3";
option java_package = "com.github.xjs.protobuffdemo";
option java_outer_classname = "PersonProto";

message Person{
    string name = 1;
    int32 age = 2;
}

注意这里的java_packagejava_outer_classname,java_package是说生成的java文件的包名,java_outer_classname是生成的java文件的类名。

此时,打开idea右边的maven的那个tab页面:
idea集成protobuf_第2张图片
双击上图中的compile-javanano,就可以在 com.github.xjs.protobuffdemo.nano这个包下面生成PersonProto这个类。

测试

@Test
    public void testPersonSerialize() throws Exception{
        Person p = new Person();
        p.setName("张三");
        p.setAge(30);
        byte[] bytes = ProtobuffUtil.toBytes(ProtobuffUtil.toNano(p, PersonProto.Person.class));
        System.out.println("bytes.length:"+bytes.length);//10
        p = ProtobuffUtil.toBean(ProtobuffUtil.fromBytes(bytes, PersonProto.Person.class), Person.class);
        System.out.println(p.getName() + "," + p.getAge());
    }

完成的代码下载:

https://github.com/xjs1919/enumdemo 下面的 protobuff-demo。

你可能感兴趣的:(protobuf)