Консольное приложение запускается вызовом метода start()
объекта ConsoleUI
Стартовое меню представляет список из 4 возможных действий:
- Get console size - получение размеров консоли
- Set console size - установка новых размеров консоли
- Generate maze - генерация лабиринта
- Quit - выход
Разберем некоторые действия подробнее:
-
Set console size
После вызова этого действия необходимо ввести новую корректную ширину и высоту консоли, после чего они будут установлены
-
Generate maze
- После вызова этого действия необходимо выбрать алгоритм генерации из списка, затем ввести корректные значения высоты и ширины будущего лабиринта.
- Следующим шагом будет предложено изменить сгенерированный лабиринт путем
добавления/исключения новых проходов. Для добавления необходимо ввести
число проходов которое нужно добавить, для исключения - число проходов со
знаком '-', для перехода к следующему шагу - 0.
Пример:
- '5' - добавить 5 случайных проходов
- '-5' - убрать 5 случайных проходов
- '0' - перейти к следующему шагу
- Затем будет предложено сгенерировать путь в готовом лабиринте. В случае отказа выведется сгенерированный лабиринт и запустится меню. В ином случае необходимо ввести стартовую и конечную клетки пути, после чего выведется лабиринт с найденным путем и запустится меню.
Это типовой Java-проект, который собирается с помощью инструмента автоматической сборки проектов Apache Maven.
Проект состоит из следующих директорий и файлов:
- pom.xml – дескриптор сборки, используемый maven, или Project Object Model. В нем описаны зависимости проекта и шаги по его сборке
- src/ – директория, которая содержит исходный код приложения и его тесты:
- mvnw и mvnw.cmd – скрипты maven wrapper для Unix и Windows, которые позволяют запускать команды maven без локальной установки
- checkstyle.xml, checkstyle-suppression.xml, pmd.xml и spotbugs-excludes.xml – в проекте используются линтеры для контроля качества кода. Указанные файлы содержат правила для используемых линтеров
- .mvn/ – служебная директория maven, содержащая конфигурационные параметры сборщика
- lombok.config – конфигурационный файл Lombok, библиотеки помогающей избежать рутинного написания шаблонного кода
- .editorconfig – файл с описанием настроек форматирования кода
- .github/workflows/build.yml – файл с описанием шагов сборки проекта в среде Github
- .gitattributes, .gitignore – служебные файлы для git, с описанием того, как обрабатывать различные файлы, и какие из них игнорировать
Подробнее о том, как приступить к разработке, описано в разделах
курса 1.8 Настройка IDE
, 1.9 Работа с Git
и
1.10 Настройка SSH
.
Для того чтобы собрать проект, и проверить, что все работает корректно, можно запустить из модального окна IDEA Run Anything команду:
mvn clean verify
Альтернативно можно в терминале из корня проекта выполнить следующие команды.
Для Unix (Linux, macOS, Cygwin, WSL):
./mvnw clean verify
Для Windows:
mvnw.cmd clean verify
Для окончания сборки потребуется подождать какое-то время, пока maven скачает все необходимые зависимости, скомпилирует проект и прогонит базовый набор тестов.
Если вы в процессе сборки получили ошибку:
Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion failed with message:
JDK version must be at least 22
Значит, версия вашего JDK ниже 22.
Если же получили ошибку:
Rule 1: org.apache.maven.enforcer.rules.version.RequireMavenVersion failed with message:
Maven version should, at least, be 3.8.8
Значит, у вас используется версия maven ниже 3.8.8. Такого не должно произойти,
если вы запускаете сборку из IDEA или через mvnw
-скрипты.
Далее будут перечислены другие полезные команды maven.
Запуск только компиляции основных классов:
mvn compile
Запуск тестов:
mvn test
Запуск линтеров:
mvn checkstyle:check modernizer:modernizer spotbugs:check pmd:check pmd:cpd-check
Вывод дерева зависимостей проекта (полезно при отладке транзитивных зависимостей):
mvn dependency:tree
Вывод вспомогательной информации о любом плагине (вместо compiler
можно
подставить интересующий вас плагин):
mvn help:describe -Dplugin=compiler
- Документация по maven: https://maven.apache.org/guides/index.html
- Поиск зависимостей и их версий: https://central.sonatype.com/search
- Документация по процессу автоматизированной сборки в среде github: https://docs.github.com/en/actions
- Документация по git: https://git-scm.com/doc
- Javadoc для Java 22: https://docs.oracle.com/en/java/javase/22/docs/api/index.html