1. 引言
本文将带你快速了解JHipster,展示如何使用命令行工具创建简单的单体应用和自定义实体。我们会在每个步骤中分析生成的代码,并涵盖构建命令和自动化测试。
2. JHipster是什么
JHipster 本质上是一个基于前沿开发工具和平台构建的高级代码生成器。其核心组件包括:
- Yeoman - 前端脚手架工具
- 经典的 Spring Boot
- 主流JavaScript框架 AngularJS(也支持 Angular 2+)
只需几条shell命令,JHipster就能生成一个完整的Java Web项目,包含:
✅ 响应式前端界面
✅ 文档化的REST API
✅ 全面的测试覆盖
✅ 基础安全机制
✅ 数据库集成
生成的代码注释清晰,遵循行业最佳实践。其他关键技术包括:
- Swagger - API文档
- Maven/Npm/Yarn/Gulp/Bower - 依赖管理和构建工具
- Jasmine/Protractor/Cucumber/Gatling - 测试框架
- Liquibase - 数据库版本控制
⚠️ 注意:这些技术都是可选的,在项目创建时可按需选择。
3. 安装
安装JHipster前需先安装依赖:
如果使用AngularJS 1,还需额外安装:
最后安装JHipster本身(最简单的一步):
yarn global add [email protected]
使用Yarn包管理器安装JHipster生成器即可。
4. 创建项目
创建JHipster项目本质是构建Yeoman项目,核心命令是:
mkdir baeldung-app && cd baeldung-app
yo jhipster
这将创建项目目录并启动交互式配置流程(共15步)。本文选择创建简单的单体应用,主要配置如下:
- 应用类型 → 单体应用(推荐简单项目)
- 市场插件 → 输入
N
(跳过可选插件) - 构建工具 → Maven
- 其他技术 → 直接回车(跳过社交登录等)
- 前端框架 → Angular 17
- 国际化 → 启用,选择英语为母语
- 测试框架 → 选择Gatling和Protractor
创建完成后会显示:
I'm all done. Running npm install for you to install the required
dependencies. If this fails, try running the command yourself.
依赖安装完成后输出:
Server application generated successfully.
Run your Spring Boot application:
./mvnw
Client application generated successfully.
Start your Webpack development server with:
npm start
项目根目录可执行的关键命令:
./mvnw # 启动Spring Boot(端口8080)
./mvnw clean test # 运行后端测试
yarn test # 运行前端测试
JHipster会自动生成README文件,包含更多实用命令说明。
5. 生成代码概览
生成的项目结构类似标准Java/Spring项目,但包含大量额外组件。由于JHipster同时生成前端代码,你会看到package.json
、webpack
等Web相关文件。
5.1. 后端文件
- Java代码位于
src/main/java
-
src/main/resources
包含: - 国际化文件(
i18n
目录) - 邮件模板
- 配置文件
- 单元/集成测试在
src/test/java
- 性能测试(Gatling)在
src/test/gatling
(创建实体后才有内容)
5.2. 前端文件
- 根目录:
src/main/webapp
- Angular模块:
app
目录 - 前端国际化:
i18n
目录 - 单元测试(Karma):
src/test/javascript/spec
- 端到端测试(Protractor):
src/test/javascript/e2e
6. 创建自定义实体
实体是JHipster应用的基石,代表业务对象(如用户、任务、文章等)。创建实体非常简单,可通过命令行或JDL-Studio在线工具实现。
本文使用命令行创建两个实体:Post(文章)和Comment(评论)。
Post实体要求:
- 标题(String,必填,长度限制)
- 内容(String,必填)
- 创建日期(LocalDate)
- 与User的多对一关系(作者)
Comment实体要求:
- 内容(String)
- 创建日期(LocalDate)
- 与Post的多对一关系(必填)
创建Post实体
yo jhipster:entity post
按提示配置:
- 添加字段:
title
(String,必填,最小/最大长度)content
(String,必填)creationDate
(LocalDate)
- 添加关系:
- 关联实体:
user
- 关系名:
creator
- 类型:
many-to-one
- 显示字段:
name
- 设为必填
- 关联实体:
- 选择不使用DTO(直接实体)
- 选择直接注入Repository到Service
- 分页类型:
infinite scroll
- 允许覆盖文件
创建Comment实体
重复上述流程,创建comment
实体,包含:
-
text
(String) -
creationDate
(LocalDate) - 与Post的多对一关系(必填)
生成结果
JHipster会创建/修改大量文件:
-
.jhipster
目录:实体JSON描述文件 -
domain
包:@Entity
注解类 -
repository
包:数据访问层 -
web.rest
包:REST控制器 -
resources/config/liquibase/changelog
:数据库变更日志 -
src/main/webapp/entities
:前端实体目录 -
i18n
:国际化文件 -
src/test
:前后端测试文件
运行测试验证:
./mvnw clean test # 后端测试
yarn test # 前端测试
mvnw gatling:execute # 性能测试(需先启动应用)
启动应用(./mvnw
),访问 http://localhost:8080,使用`admin/admin`登录。在**Entities**菜单选择**Post**,点击**Create a new Post**:
注意JHipster生成的表单组件和验证逻辑非常完善,可直接使用或按需定制。
7. 持续集成支持
JHipster可自动生成主流CI工具的配置文件:
yo jhipster:ci-cd
按提示选择:
- CI工具(Jenkins/Travis CI/Circle CI/GitLab)
- 是否使用Docker/Sonar
- 是否部署到Heroku
支持的CI工具配置文件:
- Jenkins:
JenkinsFile
- Travis CI:
.travis.yml
- Circle CI:
circle.yml
- GitLab:
.gitlab-ci.yml
8. 结论
本文仅展示了JHipster的部分能力,其功能远不止于此。建议继续探索官方文档获取更多高级特性。
完整代码示例可在GitHub仓库查看。