背景:项目需要通过java服务在k8s集群中部署PrometheusRule和PodMonitor CR资源,因此需要调研CRD转Java类的代码生成工具。
1、引入Fabric8代码生成插件
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>java-generator-maven-plugin</artifactId>
<version>6.4.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<enumUppercase>false</enumUppercase>
<generatedAnnotations>false</generatedAnnotations>
<source>${project.basedir}/src/main/resources/k8s/crds/podmonitor-crd.yaml</source>
</configuration>
</plugin>
</plugins>
</build>
将需要生产代码的crd文件放置到src/main/resources下,pom文件插件配置的<source>值替换为crd文件存储路径;
2、编译项目,生成代码
执行mvn编译命令,生成java pojo
mvn clean compile
编译完成后,在target/generated-sources/java/文件夹下,可以看到crd对应的java类:
最后,将生成代码拷贝到需要的地方使用。