«1. Введение

Эта статья даст вам краткий обзор JHipster, покажет, как создать простое монолитное приложение и пользовательские объекты с помощью инструментов командной строки.

Мы также рассмотрим сгенерированный код на каждом этапе, а также рассмотрим команды сборки и автоматические тесты.

2. Что такое Jhipster

JHipster — это высокоуровневый генератор кода, основанный на обширном списке передовых инструментов и платформ разработки.

Основными компонентами инструмента являются:

    Yeoman, интерфейсный инструмент для формирования шаблонов Старый добрый Spring Boot AngularJS, известный фреймворк Javascript. JHipster также работает с AngularJS 2

JHipster создает с помощью всего нескольких команд оболочки полноценный веб-проект Java с дружественным, отзывчивым внешним интерфейсом, документированным REST API, полным охватом тестов, базовой безопасностью и интеграцией с базой данных! Полученный код хорошо прокомментирован и соответствует лучшим отраслевым практикам.

Другие ключевые технологии, которые он использует:

    Swagger для документации API Maven, Npm, Yarn, Gulp и Bower в качестве менеджеров зависимостей и инструментов сборки Jasmine, Protractor, Cucumber и Gatling в качестве тестовых сред Liquibase для управления версиями базы данных ~~ ~ Мы не обязаны использовать все эти элементы в нашем сгенерированном приложении. Необязательные элементы выбираются при создании проекта.

3. Установка

JHipster App

A beautiful JHipster-generated application. This is the result of the work we’ll be doing throughout this article.

Чтобы установить JHipster, нам сначала нужно установить все его зависимости:

Java — рекомендуется выпуск 8 Git — система контроля версий NodeJS Yeoman Yarn

    Это достаточно зависимостей, если вы решите использовать AngularJS 2. Однако, если вы предпочитаете вместо этого использовать AngularJS 1, вам также необходимо установить Bower и Gulp.

Теперь, чтобы закончить, нам просто нужно установить сам JHipster. Это самая легкая часть. Так как JHipster является генератором Yeoman, который, в свою очередь, представляет собой пакет Javascript, установка так же проста, как запуск простой команды оболочки:

Вот и все! Мы использовали менеджер пакетов Yarn для установки генератора JHipster.

yarn global add generator-jhipster

4. Создание проекта

Создание проекта JHipster по сути означает создание проекта Yeoman. Все начинается с команды yo:

Это создаст папку нашего проекта с именем baeldung-app и запустит интерфейс командной строки Yeoman, который поможет нам создать проект.

mkdir baeldung-app && cd baeldung-app
yo jhipster

Процесс включает 15 шагов. Я рекомендую вам изучить доступные варианты на каждом этапе. В рамках этой статьи мы создадим простое монолитное приложение, не слишком отклоняясь от параметров по умолчанию.

Вот шаги, наиболее важные для этой статьи:

Тип приложения — выберите монолитное приложение (рекомендуется для простых проектов) Установка других генераторов из JHipster Marketplace — введите N. На этом этапе мы могли бы захотеть установить классные дополнения. Некоторые популярные из них: аудит сущностей, позволяющий отслеживать данные; bootstrap-material-design, который использует модные компоненты Material Design и angular-datatables Maven или Gradle — выберите другие технологии Maven — не выбирайте никаких параметров, просто нажмите Enter, чтобы перейти к следующему шагу. Здесь мы можем подключить вход через социальные сети с помощью Google, Facebook и Twitter, что является очень приятной функцией. Клиентская среда — выберите [БЕТА] Angular 2.x. Мы также можем использовать AngularJS 1. Включить интернационализацию — введите 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

JHipster сгенерирует файл README, помещенный прямо в корневую папку нашего проекта. Этот файл содержит инструкции по запуску многих других полезных команд, связанных с нашим проектом.

./mvnw #starts Spring Boot, on port 8080
./mvnw clean test #runs the application's tests
yarn test #runs the client tests

«5. Обзор сгенерированного кода

Взгляните на автоматически сгенерированные файлы. Вы заметите, что проект очень похож на стандартный проект Java/Spring, но с большим количеством дополнений.

Поскольку JHipster также позаботится о создании внешнего кода, вы найдете файл package.json, папку webpack и некоторые другие материалы, связанные с Интернетом.

Давайте быстро рассмотрим некоторые важные файлы.

5.1. Внутренние файлы

Как и ожидалось, код Java содержится в папке src/main/java Папка src/main/resources содержит некоторое статическое содержимое, используемое кодом Java. Здесь мы найдем файлы интернационализации (в папке i18n), шаблоны электронной почты и некоторые файлы конфигурации Модульные и интеграционные тесты находятся в папке src/test/java. Тесты производительности (Gatling) находятся в src/test/gatling. Однако на данный момент в этой папке не будет большого количества содержимого. Как только мы создадим несколько объектов, тесты производительности для этих объектов будут расположены здесь

    5.2. Внешний интерфейс

Корневая папка внешнего интерфейса — src/main/webapp Папка приложения содержит большую часть модулей AngularJS. i18n содержит файлы интернационализации для внешней части. Модульные тесты (Karma) находятся в папке src/test/javascript/. папка spec Сквозные тесты (Protractor) находятся в папке src/test/javascript/e2e

    6. Создание пользовательских сущностей

Сущности — это строительные блоки нашего приложения JHipster. Они представляют бизнес-объекты, такие как Пользователь, Задача, Сообщение, Комментарий и т. д.

Создание объектов с помощью JHipster — это безболезненный процесс. Мы можем создать объект с помощью инструментов командной строки, аналогично тому, как мы создали сам проект, или с помощью JDL-Studio, онлайн-инструмента, который генерирует JSON-представление объектов, которые впоследствии можно импортировать в наш проект.

В этой статье давайте воспользуемся инструментами командной строки для создания двух объектов: Post и Comment.

Пост должен иметь заголовок, текстовое содержание и дату создания. Это также должно быть связано с пользователем, который является создателем поста. Пользователь может иметь много сообщений, связанных с ним.

Пост также может иметь ноль или много комментариев. Каждый комментарий имеет текст и дату создания.

Чтобы запустить процесс создания объекта Post, перейдите в корневую папку нашего проекта и введите:

Теперь следуйте шагам, представленным в интерфейсе.

yo jhipster:entity post

Добавьте поле с именем title типа String и добавьте к нему несколько правил проверки (обязательно, минимальная длина и максимальная длина) Добавьте еще одно поле с именем content типа String и сделайте его также обязательным Добавьте третье поле с именем createDate, из введите LocalDate Теперь давайте добавим связь с пользователем. Обратите внимание, что объект User уже существует. Он создается во время концепции проекта. Имя другого объекта — пользователь, имя связи — создатель, тип — «многие к одному», поле отображения — имя, и лучше сделать связь обязательной. Не выбирайте использование DTO, используйте Direct сущность вместо этого Выберите внедрение репозитория непосредственно в класс обслуживания. Обратите внимание, что в реальном приложении, вероятно, было бы более разумно отделить контроллер REST от класса службы. Чтобы закончить, выберите бесконечную прокрутку в качестве типа разбивки на страницы. Дайте JHipster разрешение на перезапись существующих файлов, если это необходимо.

    Повторите процесс. выше, чтобы создать объект с именем comment с двумя полями: text типа String и createDate типа LocalDate. Комментарий также должен иметь требуемую связь «многие к одному» с сообщением.

Вот оно! В этом процессе много шагов, но вы увидите, что их выполнение не займет много времени.

Вы заметите, что JHipster создает кучу новых файлов и изменяет несколько других как часть процесса создания сущностей:

«Создается папка .jhipster, содержащая файл JSON для каждого объекта. Эти файлы описывают структуру сущностей Фактические аннотированные классы @Entity находятся в пакете домена Репозитории создаются в пакете репозитория Контроллеры REST находятся в пакете web.rest Журналы изменений Liquibase для каждого создания таблицы находятся в resources/config/liquibase/ папка журнала изменений Во фронтальной части папка для каждой сущности создается в директории сущностей Файлы интернационализации настраиваются в папке i18n (не стесняйтесь изменять их, если хотите) Несколько тестов, фронтенд и бэк- end создаются в папке src/test

    Это довольно много кода!

Не стесняйтесь запускать тесты и дважды проверять их прохождение. Теперь мы также можем запускать тесты производительности с помощью Gatling, используя команду (приложение должно быть запущено, чтобы эти тесты прошли):

Если вы хотите проверить интерфейс в действии, запустите приложение с помощью ./mvnw, перейдите по адресу http://localhost:8080 и войдите в систему как администратор (пароль — admin).

mvnw gatling:execute

Выберите «Опубликовать» в верхнем меню в разделе «Сущности». Вам будет показан пустой список, который позже будет содержать все сообщения. Нажмите кнопку «Создать новую публикацию», чтобы открыть форму включения:

Обратите внимание, насколько тщательно JHipster относится к компонентам формы и сообщениям проверки. Конечно, мы можем изменить внешний вид настолько, насколько захотим, но форма и так очень хорошо построена.

7. Поддержка непрерывной интеграции

JHipster может автоматически создавать файлы конфигурации для наиболее часто используемых инструментов непрерывной интеграции. Просто запустите эту команду:

И ответьте на вопросы. Здесь мы можем выбрать, для каких инструментов CI мы хотим создать файлы конфигурации, хотим ли мы использовать Docker, Sonar и даже развернуть их на Heroku как часть процесса сборки.

yo jhipster:ci-cd

Команда ci-cd может создавать файлы конфигурации для следующих инструментов CI:

Jenkins: файл JenkinsFile Travis CI: файл .travis.yml Circle CI: файл circle.yml GitLab: файл is .gitlab-ci.yml

    8. Заключение

Эта статья дала небольшое представление о том, на что способен JHipster. Конечно, это намного больше, чем мы можем рассказать здесь, поэтому обязательно продолжайте изучать официальный сайт JHipster.

Как всегда, код доступен на GitHub.

«