您的位置:首页 > 其它

Interllij protobuf 环境配置

2016-06-04 17:12 357 查看
来自:http://zhuliangliang.me/2015/01/12/protobuf_in_java/

Java 项目中集成 Protocol Buffers

最近在接入某厂广告系统,需要使用
Protobuf Buffers(以下简称 PB)来进行数据交换,而在此之前,我对 PB 一无所知,经历了版本冲突、插件无效等问题之后,总算成功在项目中集成 PB。下面主要介绍 PB 的安装、IDEA PB 插件配置、Java 项目中基本的使用等:

PB 安装配置

下载 PB: 在
PB 官网,下载最新版(或者其他版本)PB,这里为了与 Java 项目中的 PB Maven 依赖版本一致,使用 PB 2.5.0 版本。
安装 PB:
解压:
tar zxvf protobuf-2.5.0.tar.gz
,使用
cd
命令进入
protobuf-2.5.0
目录。
./configure,通常建议加上
--prefix
参数来指定目录,例如:
./configure --prefix=/usr/local/Cellar/protobuf/2.5.0

make,如出现
make: Nothing to be done for all
错误提示,表示 PB 已经被编译好了,如需重新编译,可以先用
make clean
命令删除已经编译好的文件。
make check
make install

设置环境变量: 编辑
/etc/profile
,在文件末尾加入:
1
2

export PATH=$PATH:/usr/local/Cellar/protobuf/2.5.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Cellar/protobuf/2.5.0/lib

至此,PB已经成功安装完毕,可以使用
protoc --version
命令来验证是否安装成功,如果出现如下结果,则表示 PB 已经安装成功并且生效。

libprotoc 2.5.0

Intellij IDEA 安装 Protobuf 插件

通常我们在编写好 PB 文件之后,需要使用
protoc
来将 PB 文件编译成对应的代码,在命令行里面我们可以使用如下命令来生成对应的 Java 文件:

protoc --proto_path=src --java_out=build/gen src/me.zhuliangliang

当我们有非常多的 PB 描述文件之后,如果每个文件都单独使用命令行来编译(尽管可以使用脚本来快速实现,但又将会面临拷贝 Java 文件等恼火的操作)。是否有这样一个工具:在 IDE 中编写 PB 文件之后,可以在指定 package 下一键生成对应的 Java 文件,方便对 Java 文件的管理。Google Protocol Buffers support
就是有着上诉功能的 IDEA 插件。

安装 PB 插件。进入 IDEA 设置中心,打开
Plugins
,点击
Browse repositories
,搜索
protocol buffer
安装插件,如下图所示。安装好 PB 插件之后,需要重启 IDEA。


安装 PB 插件

配置路径。PB 插件安装完毕之后,需要为插件配置 PB 的编译路径,也就是在上一步中我们安装的
protoc



PB 路径配置

至此,IDEA PB 插件安装完成,下面介绍如何在项目中使用 PB 插件来快速生成 Java 文件。

Java PB Demo

新建 Maven 项目,配置 PB 生成 Java 文件的目录:进入
Project Settings
,填写
Output source directory
,这里的目录就是项目的
Java source
目录。


编译路径配置

根据 PB 描述文件,生成 Java 文件。在 PB 文件中右键,从菜单中选择
Compile ‘person.proto’
,就能生成对应的 Java 文件。

1
23
4
5
6
7
8

option java_package = "me.zhuliangliang.proto";
option java_outer_classname = "PersonModel";

message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}

加入 Maven 依赖。在 pom.xml 文件中加入如下依赖:
1
23
4
5

<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.5.0</version>
</dependency>

编写测试用例
1
23
4
5
6
7
8
9
10

public class TestPersonModel {
@Test
public void testProto() {
PersonModel.Person person = PersonModel.Person.newBuilder()
.setId(100).setName("zhuliangliang")
.setEmail("zhuliangliang.me").build();
System.out.println(person);
Assert.assertEquals(100, person.getId());
}
}

Demo github 地址:https://github.com/zhuliangliang/protoDemo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: