【问题标题】:Customizing JHipster自定义 JHipster
【发布时间】:2015-12-01 16:33:41
【问题描述】:

是否可以为组织自定义/扩展 JHipster ?

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

如果这是可能的,是否可以在保留更新 JHipster 的可能性的同时以更新 JHipster 不会覆盖这些扩展的方式完成?

谢谢。

【问题讨论】:

  • 是的,这是可能的,它与我目前参与的项目完全匹配。但详细的答案取决于你想从 JHipster 那里得到什么。它是一个很好的快速入门工具,但我们不会在成熟的应用程序开发中使用 JHipster 本身。只是偶尔用于快速创建实体。
  • @dftche:嗯,这正是我的想法:使用 JHipster 搭建脚手架:创建基础结构、CRUD 页面和实体。之后,继续正常开发,即实现业务逻辑,与其他应用程序集成等。您能否与我分享一下您是如何自定义和使用 JHipster 的?将不胜感激。谢谢。如果你这样做了,请回答问题,而不是发表评论,这样我就可以感谢你解决了这个问题。

标签: jhipster


【解决方案1】:

这是一般的方法:

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

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

一些注意事项:

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

希望对你有帮助。

【讨论】:

  • 糟糕,误会了。我对 jhipster 资源进行了简短的研究,我认为可以在克隆后根据您的需要对其进行自定义 (github.com/jhipster/generator-jhipster/blob/master/…)
  • 这就是我的意思。然而,我怀疑许多公司是否希望他们的生成器在公共领域,所以我的全部问题是:1)定制 JHipster 的来源(我认为应该是可能的——这应该是最简单的部分,真的); 2) 在公司的内部网络上托管这个定制的 JHipster,3) 同时还理想地能够在 JHipster 更新时更新代码;继续......
  • .... 4) 使公司网络内的开发人员可以通过本地安装的 npm 侧载 JHipster 的定制版本。今天 JH 是通过:npm install -g generator-jhipster 安装的,但我不知道你是否可以告诉 npm 从其他存储库加载东西。我对 npm、yeoman 和整个堆栈都很陌生。在所有这些中,我认为 3 几乎是不可能的,而 4 是其余的最困难的。继续......
  • ... 不过即使3不能自动化,如果1、2、4能实现的话,我觉得是一件很棒的事情,而且可以大大简化启动的过程公司的新项目,尤其是同时开发大量内部应用程序的项目(而不是庞大的项目)。无论如何,谢谢你的回答。我会将您的回复标记为解决方案。而且我可能应该抽出时间自己挖掘资源 :) 我觉得这个项目很吸引人,尤其是因为我至少有 2-3 年梦想过这样的事情,但我懒得自己开始实施。
  • 希望您能成功安排您的工作流程。我对 npm 也很陌生,所以我不能带来细节。刚刚找到了一些与本地 npm 存储库相关的链接,可能对npmjs.com/package/sinopia 有帮助,我认为在本地副本中包含 JHipster 更新将需要手动合并。我同意你对 JHipster 的总体看法,这是一个响应社区的伟大项目!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2016-06-16
    • 2021-02-01
    • 2022-10-24
    相关资源
    最近更新 更多