1. 引言

本文将带你快速了解JHipster,展示如何使用命令行工具创建简单的单体应用和自定义实体。我们会在每个步骤中分析生成的代码,并涵盖构建命令和自动化测试。

2. JHipster是什么

JHipster 本质上是一个基于前沿开发工具和平台构建的高级代码生成器。其核心组件包括:

只需几条shell命令,JHipster就能生成一个完整的Java Web项目,包含: ✅ 响应式前端界面
✅ 文档化的REST API
✅ 全面的测试覆盖
✅ 基础安全机制
✅ 数据库集成

生成的代码注释清晰,遵循行业最佳实践。其他关键技术包括:

⚠️ 注意:这些技术都是可选的,在项目创建时可按需选择。

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

jhipster项目创建流程

创建完成后会显示:

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.jsonwebpack等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

按提示配置:

  1. 添加字段:
    • title(String,必填,最小/最大长度)
    • content(String,必填)
    • creationDate(LocalDate)
  2. 添加关系:
    • 关联实体:user
    • 关系名:creator
    • 类型:many-to-one
    • 显示字段:name
    • 设为必填
  3. 选择不使用DTO(直接实体)
  4. 选择直接注入Repository到Service
  5. 分页类型:infinite scroll
  6. 允许覆盖文件

创建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仓库查看。


原始标题:Intro to JHipster