文档格式:PDF| 浏览次数:0| 上传日期: 03:12:28| 文档星级:?????
模式生成器与JAXB绑定编译器一起工莋生成非常类似于JAXB类的Avro绑定。 这个过程封装在 Maven 插件中它允许手动或者自动执行进程。 插件在一步中完成了JAXB类Avro模式和Avro类的生成。
流程嘚第一部分利用of编译器从一系列xsd架构文件生成Java代码模型。 完成后一个in插件运行,检查要生成的类并生成一个JSON格式的并行oab模式 然后将類和模式写出。 finally该插件调用由agavi项目提供的Java模式编译器,以生成一组新的Java类以进行序列化
目前,这个插件不可以用于 Maven 中心因这里你必須下载源代码并将它的***到本地 Maven 存储库。
模式生成器被包装到 Maven 插件中它可以手动执行,也可以作为构建过程的一部分 schemagen插件组件提供┅个具有一个目标的插件,"生成" 目标没有绑定到默认阶段,因这里它将不会自动执行而且在应该运行时不会自动执行。 例如'验证'或者'苼成源'阶段是放置这些活动的好地方因为它们在编译阶段之前运行。
你的Maven 项目将包含类似于以下内容的插件声明:
当前你必须提供希望茬绑定和架构列表中考虑的所有架构文件 插件名称的公开是"schemagen"。 所以现在你可以从 命令行 导航到你的nautilus文件并执行以下命令:
这将调用输叺数据上的整个工作流。 进程生成的构件包括:
然后你可以使用所需的Java文件 要使源文件自动编译,你需要在文件夹中创建它们或者使鼡 Maven 编译器插件显式添加包含。
gogen将字段和类型名称转换为有效通过以下几个简单步骤执行 public 转到名称:
_
)
这将最小化具有不同Avro名称的两个字段具有相同名称的風险。
解析类型名称时gogen avro尊重命名空间和别名。 但是生成的文件都将直接放置到用户指定的包中。 在少数情况下两个类型具有不同名稱空间但名称相同,这可能导致问题
gogen生成一个go结构,它反映了Avro模式的结构 大多数转到类型都可以精确地映射到Avro类型:
这只是一个占位苻,没有编码/解码 |
生成每个符号都具有常量的类型 |
固定字段被赋予自定义类型它是适当大小的字节 array的别名 |
联合处理为具有一个可以能类型的字段的结构,以及一个 enum 字段用于指定读取哪个字段。 |
union
比基元类型复杂 我们生成一个结构和 enum,它的名称由联合中的类型唯一确定 對于类型为 ["null","int"]
的字段,我们将生成以下内容:
这个工具是使用 版本的 API在发布中保证是稳定的。 这里保证适用于:
只有修正将是backported存在的主要版本 这意味着使用相同版本的源文件生成的源文件可能不同,但是它们不会破坏你的构建
container
软件包现在可以处理生成的任何记录类型的代码
Schema
方法,该方法包括来自架构定义的元数据
感谢 的为原语提供了编码器。