Шаблон для домашних заданий Академии Бэкенда 2025.
Это типовой Java-проект, который собирается с помощью инструмента автоматической сборки проектов Apache Maven.
Проект состоит из следующих директорий и файлов:
- pom.xml – дескриптор сборки, используемый maven, или Project Object Model. В нем описаны зависимости проекта и шаги по его сборке
- src/ – директория, которая содержит исходный код приложения и его
тесты:
- src/main – здесь находится код вашего приложения
- src/test – здесь находятся тесты вашего приложения
- mvnw и mvnw.cmd – скрипты maven wrapper для Unix и Windows, которые позволяют запускать команды maven без локальной установки
- pmd.xml и spotbugs-excludes.xml – в проекте
- используются линтеры для контроля качества кода. Указанные файлы содержат правила для используемых линтеров
- .mvn/ – служебная директория maven, содержащая конфигурационные параметры сборщика
- lombok.config – конфигурационный файл Lombok, библиотеки помогающей избежать рутинного написания шаблонного кода
- .editorconfig – файл с описанием настроек форматирования кода
- .github/workflows/build.yml – файл с описанием шагов сборки проекта в среде Github
- .gitattributes, .gitignore – служебные файлы для git, с описанием того, как обрабатывать различные файлы, и какие из них игнорировать
Для того чтобы собрать проект, и проверить, что все работает корректно, можно запустить из модального окна 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 23Значит, версия вашего JDK ниже 23.
Если же получили ошибку:
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 spotless:applyЗапуск только компиляции основных классов:
mvn compileЗапуск тестов:
mvn testЗапуск линтеров:
mvn clean compile -am spotless: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 23: https://docs.oracle.com/en/java/javase/23/docs/api/index.html
For further reference, please consider the following sections:
- Official Apache Maven documentation
- Spring Boot Maven Plugin Reference Guide
- Create an OCI image
- Distributed Tracing Reference Guide
- Getting Started with Distributed Tracing
- Spring Boot Testcontainers support
- Testcontainers Kafka Modules Reference Guide
- Testcontainers Postgres Module Reference Guide
- Spring Boot Actuator
- Spring Configuration Processor
- Spring Data JDBC
- Spring Data JPA
- Spring Data Redis (Access+Driver)
- JDBC API
- Spring for Apache Kafka
- Liquibase Migration
- Prometheus
- Testcontainers
- Validation
- Spring Web
- Spring Reactive Web
The following guides illustrate how to use some features concretely:
- Building a RESTful Web Service with Spring Boot Actuator
- Using Spring Data JDBC
- Accessing Data with JPA
- Messaging with Redis
- Accessing Relational Data using JDBC with Spring
- Managing Transactions
- Validation
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
- Building a Reactive RESTful Web Service
This project uses Testcontainers at development time.
Testcontainers has been configured to use the following Docker images:
Please review the tags of the used images and set them to the same as you're running in production.
Due to Maven's design, elements are inherited from the parent POM to the project POM.
While most of the inheritance is fine, it also inherits unwanted elements like <license> and <developers> from the
parent.
To prevent this, the project POM contains empty overrides for these elements.
If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides.