idea整合 protobuf

  1. 安装插件
    idea整合 protobuf_第1张图片
    点击 file -> setting -> plugins -> 搜索protobuf,安装即可。小编已经安装过了,因此才会出现 disable 按钮
  2. 引入依赖和build构建
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.4.0</version>
        </dependency>

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.4.1.Final</version>
            </extension>
        </extensions>
        <plugins>
            <!-- Protobuf插件 -->
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.5.0</version>
                <configuration>
                    <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
                    <protocArtifact>
                        com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier}
                    </protocArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

  1. 新建文件夹并编写 .protobuf文件
    idea整合 protobuf_第2张图片
    idea整合 protobuf_第3张图片

在 main 目录下,新建 proto 文件夹,该文件夹为 Test Resources Root类型。

syntax = "proto3";
option optimize_for = SPEED; // 加快解析
option java_package="com.ruoyi.ruoyitest.tcp.netty01";   //指定生成到哪个包下
option java_outer_classname="MyDataInfo"; // 外部类名, 文件名

//protobuf 可以使用message 管理其他的message
message MyMessage {

    //定义一个枚举类型
    enum DataType {
        StudentType = 0; //在proto3 要求enum的编号从0开始
        WorkerType = 1;
    }

    //用data_type 来标识传的是哪一个枚举类型
    DataType data_type = 1;

    //表示每次枚举类型最多只能出现其中的一个, 节省空间
    oneof dataBody {
        Student student = 2;
        Worker worker = 3;
    }

}


message Student {
    int32 id = 1;//Student类的属性
    string name = 2; //
}
message Worker {
    string name=1;
    int32 age=2;
}

  1. 编译
    idea整合 protobuf_第4张图片
    双击 protobuf:compile,完成编译。
  2. 引用之即可
    在这里插入图片描述

你可能感兴趣的:(开发工具,intellij-idea,maven)