1. 簡介
本文將為您提供 JHipster 的快速概述,並演示如何使用命令行工具創建簡單的單體應用程序和自定義實體。
我們還將分析在每個步驟中生成的代碼,並涵蓋構建命令和自動化測試。
2. 什麼是 Jhipster
JHipster 基本上是一個建立在大量前沿開發工具和平台的、高級的代碼生成器。
該工具的主要組件包括:
- Yeoman,一個前端腳手架工具
- 老牌的 Spring Boot
- AngularJS,一個流行的 JavaScript 框架。JHipster 也能與 AngularJS 2 配合使用
JHipster 只需要幾個 shell 命令,就能創建一個完整的 Java Web 項目,該項目具有友好的響應式前端、文檔化的 REST API、全面的測試覆蓋、基本的安全性和數據庫集成!生成的代碼經過詳細註釋,並遵循行業最佳實踐。
此外,該工具還利用了以下關鍵技術:
- Swagger,用於 API 文檔
- Maven, Npm, Yarn, Gulp 和 Bower 作為依賴管理和構建工具
- Jasmine, Protractor, Cucumber 和 Gatling 作為測試框架
- Liquibase 用於數據庫版本控制
我們不需要在生成的應用程序中使用所有這些項。可選項在項目創建期間進行選擇。
一個漂亮的 JHipster 生成的應用程序。這是本文檔中我們將要完成的工作成果。
3. 安裝
要安裝 JHipster,首先需要安裝其所有依賴項:
如果選擇使用 AngularJS 2,則以上依賴項就足夠了。但是,如果您更喜歡使用 AngularJS 1,則還需要安裝 Bower 和 Gulp
最後,只需安裝 JHipster 本身。這是最簡單的部分。由於 JHipster 是一個 Yeoman 生成器,而 Yeoman 又是一個 Javascript 包,因此安裝只需運行一個簡單的 shell 命令:
yarn global add [email protected]這就是全部!我們使用 Yarn 包管理器安裝了 JHipster 生成器。
4. 創建項目
創建一個 JHipster 項目基本上就是創建一個 Yeoman 項目。一切都從 yo 命令開始:
mkdir baeldung-app && cd baeldung-app
yo jhipster這將創建我們的項目文件夾,名為 baeldung-app,並啓動 Yeoman 的命令行界面,它將引導我們創建項目。
該過程涉及 15 步。我鼓勵您探索每一步可用的選項。在本文的範圍內,我們將創建一個簡單的 單體應用 (推薦用於簡單項目),並且不會偏離默認選項太多。
以下是與本文相關的步驟:
- 應用類型 – 選擇 單體應用 (推薦用於簡單項目)
- 從 JHipster 市場集中安裝其他生成器 – 輸入 N。 在此步驟中,我們可能想要安裝一些酷炫的插件。一些流行的插件包括 entity-audit,它啓用數據跟蹤;bootstrap-material-design,它使用流行的 Material Design 組件,以及 angular-datatables
- Maven 或 Gradle – 選擇 Maven
- 其他技術 – 不要選擇任何選項,只需按 Enter 即可移動到下一步。在這裏,我們可以選擇使用 Google、Facebook 和 Twitter 進行社交登錄,這是一個非常棒的功能。
- 客户端框架 – 選擇 Angular 17
- 啓用國際化 – 輸入 Y,然後選擇 英語 作為母語。我們可以選擇儘可能多的語言作為第二語言
- 測試框架 – 選擇 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 #starts Spring Boot, on port 8080
./mvnw clean test #runs the application's tests
yarn test #runs the client testsJHipster 會生成一個 README 文件,並將其放置在項目根目錄下。
該文件包含有關如何運行與項目相關的許多其他有用的命令的説明。
5. 生成代碼概覽
請查看自動生成的各類文件。您會注意到,項目結構與標準的 Java/Spring 項目非常相似,但同時也包含了很多額外的組件。
由於 JHipster 負責生成前端代碼,因此您會發現 package.json 文件、webpack 文件夾以及其他相關的 Web 開發資源。
接下來,我們快速瀏覽一些關鍵文件。
5.1 後端文件
- 正如預期的那樣,Java 代碼位於 src/main/java 文件夾中
- src/main/resources 文件夾包含 Java 代碼所使用的靜態內容。在這裏可以找到國際化文件(位於 i18n 文件夾中)、電子郵件模板和一些配置文件
- 單元測試和集成測試位於 src/test/java 文件夾中
- 性能測試(Gatling)位於 src/test/gatling。 然而,在此階段,該文件夾的內容不會很多。 一旦我們創建了一些實體,這些對象的性能測試將位於此處
5.2. 前端
- 根前端文件夾位於 src/main/webapp
- app 文件夾包含大量的 AngularJS 模塊
- i18n 包含前端部分的國際化文件
- 單元測試(Karma)位於 src/test/javascript/spec 文件夾
- 端到端測試(Protractor)位於 src/test/javascript/e2e 文件夾
6. 創建自定義實體
實體是我們的 JHipster 應用程序的基本構建塊。它們代表業務對象,例如 用户、任務、帖子、評論 等。
使用 JHipster 創建實體是一個無縫的過程。我們可以使用命令行工具創建對象,類似於我們創建項目本身,或者通過 JDL-Studio,一個在線工具,可以生成實體的 JSON 表示,然後導入到我們的項目中。
在本文中,讓我們使用命令行工具創建兩個實體:帖子 和 評論。
一個 帖子 應該具有標題、文本內容和創建日期。它還應該與用户相關聯,該用户是 帖子 的創建者。一個 用户 可以與許多 帖子 相關聯。
一個 帖子 還可以有零個或多個 評論。每個 評論 都有文本和創建日期。
要啓動創建我們 帖子 實體的過程,請轉到我們項目的根文件夾,並輸入:
yo jhipster:entity post請按照界面提供的步驟進行操作。
- 添加一個名為 title 的字段,類型為 String,併為該字段添加驗證規則(Required、最小長度和最大長度)
- 添加另一個名為 content 的字段,類型為 String,並使其也為 Required
- 添加一個名為 creationDate 的第三個字段,類型為 LocalDate
- 現在,讓我們添加與 User 的關係。請注意,實體 User 已經存在,它是在項目概念階段創建的。另一個實體的名稱是 user,關係名稱是 creator,類型是 多對一,顯示字段是 name,最好使關係為 required
- 不要選擇使用 DTO,而是選擇使用 直接實體
- 選擇將倉庫直接注入到服務類中 。請注意,在實際應用中,控制器與服務類之間的分離可能更合理
- 為了完成,選擇 無限滾動 作為分頁類型
- 授予 JHipster 在需要時覆蓋現有文件的權限
重複以上步驟,創建一個名為 comment 的實體,該實體有兩個字段,文本,類型為 String,以及 creationDate 類型為 LocalDate。 Comment 也應具有一個必需的 多對一 關係與 Post
這就完成了!雖然流程中有許多步驟,但您會發現它們並不耗時。
您會注意到 JHipster 會創建許多新文件,並修改一些現有文件,作為創建實體的過程的一部分:
- 一個 .jhipster 文件夾被創建,其中包含每個對象的 JSON 文件。這些文件描述了實體的結構
- 實際的 @Entity 註解類位於 domain 包中
- 倉庫被創建在 repository 包中
- REST 控制器位於 web.rest 包中
- Liquibase 變更日誌對於每個表創建位於 resources/config/liquibase/changelog 文件夾中
- 在前端部分,每個實體的文件夾在 entities 目錄中創建
- 國際化文件設置在 i18n 文件夾中(如果您想修改它們,請隨意修改)
- 在 src/test 文件夾中創建了多個測試(前端和後端)
這可真不少代碼了!
請隨意運行測試並檢查所有測試是否通過。現在,我們還可以使用 Gatling 運行性能測試,使用命令(為了使這些測試通過,應用程序必須正在運行):
mvnw gatling:execute如果您想查看前端運行效果,請啓動應用程序,使用 /mvnw,導航到 http://localhost:8080 並以 admin 用户身份登錄(密碼為 admin)。
請在頂部菜單中選擇 Post,在 Entities 菜單項下。您將看到一個空列表,稍後將包含所有帖子。單擊 Create a new Post 按鈕以顯示包含表單:
請注意 JHipster 在表單組件和驗證消息方面所展現的精細之處。當然,我們可以隨意修改前端,但該表單本身已經非常完善。
7. 持續集成支持
JHipster 可以自動生成用於最常用的持續集成工具的配置文件。只需運行以下命令:
yo jhipster:ci-cd並回答問題。在這裏,我們可以選擇創建配置文件的 CI 工具,是否使用 Docker、Sonar,以及作為構建過程的一部分將其部署到 Heroku。
ci-cd 命令可以為以下 CI 工具創建配置文件:
- Jenkins:文件名為
Jenkinsfile - Travis CI:文件名為
.travis.yml - Circle CI:文件名為
circle.yml - GitLab:文件名為
.gitlab-ci.yml