自定义 JHipster

Customizing JHipster

是否有可能 customize/extend 组织的 JHipster?

我的意思是说有一个本地版本可以创建一些项目,这些项目具有特定于组织的功能?例如,使用自定义身份验证方案(仍然依赖于 Spring 安全性)、使用自定义样式(颜色、字体)、添加某些 Maven 依赖项等。

如果可行,是否可以在保留更新 JHipster 的可能性的同时做到 JHipster 的更新不会覆盖这些扩展?

谢谢。

一般方法如下:

  1. 首先,我们创建了一个包含所有标准 JHipster 的空白项目 堆。使用的 DBMS 是 Postgres。我们概述了基本的数据结构 用jhipster实体生成工具,创建最重要的 关系等。我们还定义了基本的用户角色和权限 在标准的 JHipster 选项中。在这个阶段我们并没有付出太多 非常注意细节,例如复杂的唯一约束, 业务限制、用户管理、JPA 错误处理和 演示文稿等。刚刚创建了一种 backbone 开始。 CRUD 页面都是标准的。
  2. 我们引入了一些特定领域的业务逻辑。执行了基本的前端定制:品牌, 样式,一些自定义视图(仍然广泛使用 bootstrap 类)等。Jhipster 生成的框架保留在原位但已扩展。我们在两个后端都稍微改变了授权逻辑 和前端,它是基于令牌的,具有一定的令牌验证 规则。引入了用户友好的错误处理,允许用户 了解在各种情况下出现的业务限制。我们开始编写更复杂的单元测试来满足最近实现的业务逻辑。在这个阶段,实体大部分(~80%)是手动制作的,因为我们已经习惯了 JHipster 提供的数据结构,而且我们在 CRUD REST 控制器、页面和测试中进行了太多自定义,涵盖了所有这些。 Liquibase 变更日志是使用 liquibase:diff 生成并手动编辑的。我们不会将此类实体添加到 .jhipster 文件夹。
  3. 由于对界面设计的要求越来越高和越来越严格,因此决定为最终用户交互引入单独的前端层。它与 jhipster 生成的前端部分共享 REST 接口,但在项目结构方面是绝对独立的。我们决定也将 Angular 用于新的前端层。其实就是一个子文件夹,里面有index.html、bower.json、Gruntfile.js等。同时我们不断完善业务逻辑,细化db结构,增加代码覆盖率,引入新用户角色等
  4. ...

因此我们稍微定制了 "old" JHipster 前端以用于管理和数据管理目的。以及一个独立的 "new" 前端,具有自定义设计来处理最终用户。 请注意:可以保留原始界面,将其自定义到一定限度并保留生成实体的可能性,并且只要合理,它在我们的项目中运行良好。

一些注意事项:

  • pom.xml 中的组件版本不断手动更新;
  • Maven 依赖项已手动添加到 pom.xml;
  • JS 依赖被手动添加到 index.html/bower.json/app.js;
  • 如果您有复杂的前端脚本,处理生产配置文件的 JS 丑化可能会很棘手;
  • 另一个困难是让 liquibase 脚本同时适用于 spring-boot 使用的 DBMS 和用于测试的 H2;
  • 根据项目特定的域逻辑,您可能会遇到一些配置调整问题。

希望对您有所帮助。

版本 2.26.0(2015 年 12 月中旬)中引入的另一种方法是构建您自己的模块,请参阅 documentation

稍后在 5.0.0 版本(2018 年年中)中,JHipster 引入了一个更强大的工具:blueprints,尽管它比创建模块需要更多的努力。有了蓝图,你甚至可以替换生成项目的language/framework,它已经成功用于Kotlin、NodeJS和VueJS。