能否在JHipster中自定义包结构生成应用?附示例需求
在JHipster中自定义包结构与项目目录的实现方法
完全可行,JHipster支持通过基础配置、手动调整甚至自定义模板的方式实现自定义包结构和目录组织,下面针对新手给出两种实现思路和具体示例:
一、基础自定义(快速上手)
适合新手,通过初始化配置+手动调整就能实现需求,步骤如下:
1. 初始化项目时指定自定义根包
创建项目时,直接通过命令行参数指定你要的根包格式,比如要生成com.company.myproject.subproject的根包:
jhipster --package-name com.company.myproject.subproject
如果用交互式创建流程,在回答「Base package name」问题时输入上述包名即可。
2. 调整目录结构并修正包声明
JHipster默认生成domain、web/rest、service等目录,你可以手动调整为目标结构,同时修正对应文件的包声明:
- 把默认
domain目录下的实体类,移动到repository/entity目录,修改实体类的包声明为package com.company.myproject.subproject.repository.entity;,并同步修改Repository接口的导入路径。 - 把默认
web/rest下的控制器,移动到api/rest目录,修改包声明为package com.company.myproject.subproject.api.rest;。 - 新建
api/kafka目录,存放Kafka生产者/消费者类,包声明对应com.company.myproject.subproject.api.kafka;。 - 把默认
service下的DTO类移到service/dto,Mapper类移到service/dto/mapper,同步修改包声明和导入路径。
3. 生成新实体时直接指定目录
后续生成实体时,通过--entity-dir参数指定目标目录,避免重复手动移动:
比如生成Order实体到repository/entity目录:
jhipster entity Order --entity-dir repository/entity
生成的实体类会直接放在指定路径,包声明自动匹配。
二、进阶自定义(自动生成目标结构)
如果需要完全自动化生成自定义结构,不用每次手动调整,可以创建JHipster Blueprint(自定义模板包):
- 基于JHipster的模板框架,创建自己的npm包,替换默认的代码生成模板。
- 把实体、控制器、服务等模板的输出路径,修改为你需要的
repository/entity、api/rest等结构。 - 使用自定义Blueprint生成项目,就能直接得到目标目录结构。
注:Blueprint适合有一定Node.js基础的用户,新手建议先从基础自定义开始。
简短示例
假设要构建根包为com.example.shop.order的子项目,目标结构如下:
src/main/java/com/example/shop/order/ ├── api/ │ ├── rest/ │ │ └── OrderResource.java │ └── kafka/ │ └── OrderKafkaProducer.java ├── service/ │ ├── OrderService.java │ ├── dto/ │ │ └── OrderDTO.java │ └── dto/mapper/ │ └── OrderMapper.java ├── repository/ │ ├── OrderRepository.java │ └── entity/ │ └── Order.java
实现步骤:
- 创建后端项目并指定根包:
jhipster --package-name com.example.shop.order --skip-client
- 生成Order实体并指定目录:
jhipster entity Order --entity-dir repository/entity --skip-client
- 手动将生成的
OrderResource.java移到api/rest目录,修正包声明。 - 新建
api/kafka目录,编写OrderKafkaProducer.java并设置对应包名。 - 新建
service/dto和service/dto/mapper目录,移动OrderDTO.java和OrderMapper.java到对应路径,修正包声明和导入。 - 检查项目根类
Application.java,默认会扫描根包下所有组件,无需额外修改。
内容的提问来源于stack exchange,提问作者Yardim Server
相关产品推荐
相关产品推荐

