1. 创建项目
参考文章:java入门-创建项目-IntelliJ IDEA
2. pom.xml 配置 properties
依赖的java版本信息,后面的配置要用到。
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<protobuf-java.version>4.26.1</protobuf-java.version>
</properties>
3. pom.xml 配置依赖
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf-java.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>${protobuf-java.version}</version>
</dependency>
</dependencies>
4. pom.xml 配置插件
os-maven-plugin,做环境检测,后面的${os.detected.classifier}会用到。
protobuf-maven-plugin,做proto编译。
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.7.1</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<clearOutputDirectory>false</clearOutputDirectory>
<protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
<outputDirectory>${project.basedir}/src/main/java</outputDirectory>
<protocArtifact>com.google.protobuf:protoc:${protobuf-java.version}:exe:${os.detected.classifier}</protocArtifact>
</configuration>
</plugin>
</plugins>
</build>
5. proto定义
文件:src/main/proto/aaa.proto
syntax = "proto3";
package message.gen.proto;
option java_package = "message.gen.proto";
message Person {
optional string name = 1;
optional int32 id = 2;
optional string email = 3;
}
6. 编译proto
双击compile
7. 使用proto
src/main/java/org/example/Main.java,添加代码实现序列化和反序列化。
package org.example;
import com.google.protobuf.InvalidProtocolBufferException;
import message.gen.proto.Aaa.Person;
public class Main {
public static void main(String[] args) throws InvalidProtocolBufferException {
Person.Builder personBuilder = Person.newBuilder();
personBuilder.setEmail("aaa@qq.com").setName("aaa").setId(123);
Person person = personBuilder.build();
byte[] aaa = person.toByteArray();
System.out.println(aaa);
Person person2 = Person.parseFrom(aaa);
System.out.println(person2);
}
}
8. 运行测试
IntelliJ 点击main函数左侧绿色小三角。