6.5 KiB
6.5 KiB
MetaPlugin 使用文档
1. 插件简介
MetaPlugin 是一个 IntelliJ IDEA 插件,用于把 XSD 结构转换为可配置的 XOM 映射 XML,并按配置生成对应的 Java 实体类。
当前项目中的插件信息:
- 插件名:
MetaPlugin - 插件 ID:
com.dmiki.metaplugin - 当前版本:
1.0.0 - IDE 兼容下限:
sinceBuild = 193(IntelliJ IDEA 2019.3+)
2. 核心能力
- 解析 XSD 并以树表格方式展示节点结构。
- 可视化配置每个节点的:
- 配置策略
- Java 属性名
- Java 类型
- 自定义属性(可按节点启用)
- 预处理属性(可按节点启用)
- 预览最终 XOM 内容。
- 生成完整 XOM 文件。
- 可按“选中节点”局部预览/局部生成 XOM。
- 打开已有
.xml/.xom映射文件后,反向回显到配置界面继续编辑。
3. 安装与启动
3.1 开发调试(推荐)
在项目根目录执行:
./gradlew.bat runIde
会启动一个带插件的沙箱 IDE。
3.2 打包安装
在项目根目录执行:
./gradlew.bat buildPlugin
打包产物位于:
build/distributions/MetaPlugin-1.0.0.zip
在 IDEA 中通过 Settings -> Plugins -> Install Plugin from Disk... 选择该 ZIP 安装。
4. 入口与触发条件
插件动作名称为:XOM生成。
显示位置:
- Project View 右键菜单
- Editor 右键菜单
显示条件:仅在右键目标是以下文件时可见:
.xsd.xml.xom
说明:
- 右键
.xsd:进入 XSD 解析与配置流程。 - 右键
.xml/.xom:按 XOM 回显流程加载已有映射。 .xml入口对任意 XML 文件可见,但只有包含message/schema/resultMap结构的映射 XML 才能正确回显。
5. 快速使用流程
5.1 从 XSD 开始生成
- 在项目中右键一个
.xsd文件,点击XOM生成。 - 插件自动解析 XSD 并展示树表格。
- 按需修改顶部参数与节点配置。
- 点击
预览XOM检查输出。 - 点击
生成XOM文件生成映射文件与 Java 实体。
5.2 从已存在映射文件继续编辑(回显)
- 右键一个
.xml或.xom映射文件,点击XOM生成。 - 插件根据
<schema xsdPath="...">找到对应 XSD。 - 自动恢复节点策略、属性映射、自定义属性、预处理属性等配置。
- 调整后可再次预览或生成。
6. 界面参数说明
6.1 顶部基础参数
- 报文类型(
schemaId):默认取 XSD 文件名(去扩展名)。 - 包名:默认
com.example.message。- 注意这里填写的是“包名”,最终
resultMap.type会自动拼接为:包名 + 报文类型大写格式。 - 例如
hvps.101.001.01会转为HVPS_101_001_01。
- 注意这里填写的是“包名”,最终
- 输出目录:支持绝对路径或相对项目根目录路径。
- 自定义属性:全局默认值,默认
sign。 - 预处理属性:全局默认值,默认空。
6.2 表格列说明
- XML节点:节点名称与标记(必填、Choice、List、属性节点等)。
- 配置策略:控制该节点是否保留层级/属性/子项。
- JAVA属性名:生成
property与 Java 字段名的来源。 - JAVA类型:生成 Java 实体字段类型(可编辑)。
- 自定义属性:勾选后为该节点输出
attribute="..."。 - 预处理属性:勾选后为该节点输出
pre-processor="..."。
说明:
- 自定义属性、预处理属性为“每行可启用 + 文本值”的组合输入。
- 若行内启用但文本为空,会回退使用顶部全局默认值。
7. 配置策略语义
7.1 非叶子节点可选策略
保留层级保留属性- 输出该节点
<result>,同时输出property。
- 输出该节点
保留层级不保留属性- 输出该节点
<result>,不输出property。
- 输出该节点
不保留层级- 不输出当前层
<result>,子节点上提到父层;标签会写成父:子。
- 不输出当前层
不保留层级且不保留子项- 当前节点及其子树都不输出。
7.2 叶子节点可选策略
保留:输出该节点<result>。不保留:忽略该节点。
8. 输出规则
8.1 XOM XML 结构
输出结构固定为:
<message><schema id="..." xsdPath="..."/><resultMap id="..." type="..."> ... </resultMap>
8.2 标签属性命名
- 普通节点使用
lable="..."(历史拼写,插件当前仍按该键输出)。 - 属性节点使用
lable-attribute="..."。
说明:回显逻辑同时兼容 label/lable 与 label-attribute/lable-attribute 两套写法。
8.3 输出目录与文件名
- 默认输出目录:
src/main/resources下第一个不存在的目录:msgmappermsgmapper1msgmapper2- ... 依次类推
- 默认输出文件名:
报文类型.xml。 - 右键“生成选中节点XOM文件”时,默认文件名:
报文类型_节点名.xml。
8.4 Java 实体输出规则
- 仅当
resultMap.type含包名(存在.)时才会生成 Java 文件。 - Java 文件输出目录固定为:
XOM 文件所在目录/java。 - 如果包名为空(或未形成完整限定名),仅生成 XOM,不生成 Java。
9. 右键节点快捷能力
在树表格中右键某节点可用:
预览选中节点XOM生成选中节点XOM文件
用途:
- 仅验证或导出某个子树配置,减少大文件全量生成的调试成本。
10. 常见错误与排查
XOM-001:XSD 路径为空,或文件不存在/不可读。XOM-002:生成参数为空,或schemaId为空。XOM-003:- 未解析到可渲染节点,或
- 严格模式下出现同级重复 label。
XOM-004:- 严格模式启用但
resultMap.type为空,或 - 启用未知类型校验时节点 Java 类型缺失。
- 严格模式启用但
XOM-005:最大层级不合法,或节点深度超限。XOM-006:输出文件/目录写入失败、目录创建失败等 IO 问题。
排查建议:
- 优先确认
schema.xsdPath指向的文件实际存在。 - 确认输出目录有写权限。
- 先用
预览XOM验证结构,再执行生成。 - 如果回显失败,优先检查映射文件是否存在
resultMap节点及schema.xsdPath。
11. 常用 Gradle 命令
# 运行单元测试
./gradlew.bat test
# 启动带插件的沙箱 IDEA
./gradlew.bat runIde
# 打包插件 ZIP
./gradlew.bat buildPlugin
12. 当前版本已知行为
- 动作仅在右键
.xsd/.xml/.xom文件时出现。 - 默认根类型会偏向以 XSD 中名为
Document的全局元素作为根;若不存在则取第一个全局元素。 - 输出 XOM 使用
lable字段名属于历史兼容行为。