JHipster子生成器各执行阶段的具体作用是什么
JHipster Blueprint子生成器执行阶段说明
这些阶段是JHipster按照生成器执行流程约定划分的固定执行段,从生成器启动到结束按列表顺序依次执行,各阶段的明确用途和覆写参考如下:
initializing():生成器启动后第一个执行的阶段,仅做前置准备工作:校验当前目录是否为合法的JHipster项目、读取项目已存配置、初始化生成过程要用到的内部上下文变量、检查本地Node、Java等依赖工具的版本是否满足运行要求。如果需要加自定义前置校验规则可以部分覆写这个阶段,注意要先调用父类的同名方法,避免丢失默认初始化逻辑,无特殊需求不需要改动这个阶段。prompting():专门承载用户交互问询逻辑的阶段。默认生成器中所有需要用户选择确认的配置——比如实体是否生成DTO、是否开启分页、服务层采用哪种实现方式这类交互,全部放在这个阶段执行。如果你的blueprint需要给实体增加自定义配置项、需要用户输入额外参数,就在这个阶段追加自己的交互逻辑即可,不需要调整交互规则的话完全不用覆写。configuring():负责配置落盘和派生计算的阶段。这个阶段会把prompting阶段收集的用户选择、系统默认配置做合并,写入项目配置文件,同时基于已有配置推导出所有关联的隐性配置——比如选择了MySQL数据库,这个阶段会自动匹配对应的JDBC驱动、Hibernate方言、连接池参数这类不需要用户手动选择的关联配置。需要新增自定义配置项的持久化逻辑、自定义配置推导规则时,可以覆写这个阶段。default():兜底逻辑阶段,存放所有不属于其他明确阶段的通用处理逻辑。默认生成器会在这里做元数据对齐,比如把实体字段类型和当前选定的数据库、前端框架做适配映射、生成全局通用的常量定义。这个阶段一般不需要全量覆写,要增加自定义元数据处理逻辑的话,插入到这个阶段即可。writing():最核心的文件生成阶段,90%以上的代码生成逻辑都集中在这。默认生成器会在这个阶段渲染所有代码模板,把后端的实体类、Repository、Service、Controller,前端的模型、页面、路由这类文件写入对应项目目录,同时处理已有文件的合并冲突。你要替换默认代码模板、新增自定义生成文件、调整生成的代码结构,基本都是通过覆写这个阶段实现:全量覆写会完全替换默认的文件生成逻辑,部分覆写的话记得先执行父类的writing方法,再追加自己的文件写入操作即可。install():依赖安装阶段。所有文件写入完成后,会在这个阶段执行依赖拉取操作,比如默认会运行npm install、maven/gradle依赖拉取命令,安装新生成代码引入的第三方依赖。需要增加自定义依赖安装步骤、或者要跳过默认依赖安装流程时,可以覆写这个阶段。end():整个生成流程的最后一个阶段,负责收尾工作。默认会在这里格式化所有生成的代码、打印生成成功提示和后续操作指引、清理生成过程产生的临时文件。要增加自定义收尾逻辑——比如给生成的代码自动添加版权头、输出自定义使用提示,可以覆写这个阶段。
覆写提示:如果只是部分调整某个阶段的逻辑,不要直接覆盖整个方法后不调用父类实现,否则会丢失JHipster默认的核心逻辑,大概率导致生成器运行报错。
内容的提问来源于stack exchange,提问作者Hervé Labrie-Durand
相关产品推荐
相关产品推荐

