最近开始接触ProtoBuf用来开发项目,浏览了众多帖子(此帖也是参考这些作者完成的,在此表示感谢),几番操作,终于完成了,所以发一个帖子记录一下,有不合理的地方,还望指正。
1、先是进入设置(CTRL+ALT+S)-> 选择Plugins -> 输入Protobuf -> install;
2、创建proto目录,编写相应的.proto文件(注意:将proto目录设成Resources Root(proto目录右击,Mark Directory As,选择Resources Root));
3、User.proto文件内容;
syntax = "proto3";
package tutorial;
option java_package = "com.*****.pojo";//指定java代码的包路径
option java_outer_classname = "userProto";//自定义生成java文件的名称
message UserProto{
int32 id = 1;
string name = 2;
string email = 3;
}
|
4、pom.xml添加依赖和组件;
<properties><!--设置版本--> <grpc.version>1.6.1</grpc.version> <protobuf.version>3.3.0</protobuf.version> </properties> <dependencies><!--几个依赖-->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>${grpc.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>${grpc.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>${grpc.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf.version}</version>
</dependency>
</dependencies>
|
<build>
<plugins>
<plugin><!-- 组件 -->
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
|
5、运行组件;
6、在target中找到生成的java类拷入到需要的位置上;
7.操作;
//代码
userProto.UserProto.Builder builder = userProto.UserProto.newBuilder();
builder.setId(1);
builder.setName("Jack");
final userProto.UserProto build = builder.build();
System.out.print(build);
|
8、结果。