266.6. 生成 Java 类
Protobuf SDK 提供了一个编译器,它将为 .proto 文件中定义的格式生成 Java 类。如果您的操作系统通过 Protobuf Java 代码生成器 maven 插件支持,您可以通过向 pom.xml 中添加以下配置来自动进行 protobuf Java 代码生成:
在项目 pom.xml 的 < build> 标签内插入操作系统和 CPU 架构检测扩展,或者手动设置 ${os.detected.classifier} 参数
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.4.1.Final</version>
</extension>
</extensions>
插入项目 pom.xml 的 gRPC 和 protobuf Java 代码生成器插件 < plugins > 标签
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>test-compile</goal>
<goal>compile</goal>
</goals>
<configuration>
<protocArtifact>com.google.protobuf:protoc:${protobuf-version}:exe:${os.detected.classifier}</protocArtifact>
</configuration>
</execution>
</executions>
</plugin>
您还可以为需要手动支持的任何其他语言运行编译器。
protoc --java_out=. ./proto/addressbook.proto
这将生成一个名为 AddressBookProtos 的 Java 类,其包含 Person 和 AddressBook 的内部类。还会为您实施构建器。生成的类实施 com.google.protobuf.Message,这是序列化机制所需的。因此,务必要在交换的正文中使用这些类。如果您试图告知数据格式使用未实现 com.google.protobuf.Message 的类,则 Camel 会在路由创建时抛出异常。使用生成的构建器来转换现有域类中的数据。