Создание проекта
Проект Quarkus не создают вручную: его генерирует официальный инструмент. Генератор пишет pom.xml с нужными зависимостями, создаёт первый эндпоинт, тест, файлы Docker и обёртку Maven. Есть три равноценных способа: сайт code.quarkus.io, консольная утилита Quarkus CLI и Maven-плагин. Мы используем Maven-плагин — для него нужен только установленный Maven.
Генерация проекта
Откройте терминал в папке, где будут лежать проекты, и выполните одну команду:
mvn io.quarkus.platform:quarkus-maven-plugin:3.40.1:create \
-DprojectGroupId=com.example \
-DprojectArtifactId=blog \
-DpackageName=com.example.blog \
-Dextensions="rest-jackson"Цель create плагина создаёт папку blog. Параметры задают группу и имя проекта, Java-пакет для кода и список расширений: rest-jackson — это REST-эндпоинты с JSON через библиотеку Jackson. В конце терминал печатает:
[SUCCESS] quarkus project has been successfully generated in:
--> C:\projects\blog
В Windows вместо \ в конце строк пишите всю команду в одну строку.
Структура проекта
blog/
├── pom.xml
├── mvnw, mvnw.cmd
├── .mvn/
└── src/
├── main/
│ ├── docker/ Dockerfile для разных вариантов сборки
│ ├── java/com/example/blog/
│ │ └── GreetingResource.java первый эндпоинт
│ └── resources/
│ └── application.properties настройки
└── test/java/com/example/blog/
├── GreetingResourceTest.java тест эндпоинта
└── GreetingResourceIT.java тот же тест для собранного приложения
| Путь | Назначение |
|---|---|
pom.xml | Зависимости и плагины сборки |
mvnw, mvnw.cmd | Обёртка Maven для Linux/macOS и Windows |
src/main/java | Код приложения |
src/main/resources | Настройки и статические файлы |
src/test/java | Тесты |
Что в pom.xml
Главное в pom.xml — версия платформы Quarkus и подключённые расширения:
<properties>
<maven.compiler.release>25</maven.compiler.release>
<quarkus.platform.version>3.40.1</quarkus.platform.version>
</properties>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest-jackson</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
</dependencies>У зависимостей Quarkus нет версий: их задаёт BOM-файл платформы quarkus-bom, импортированный в pom.xml. quarkus-arc — это CDI-контейнер Quarkus, он нужен почти всегда. Генератор поставил release 25, потому что был запущен на Java 25.
Первый эндпоинт
Генератор уже создал класс:
// src/main/java/com/example/blog/GreetingResource.java
package com.example.blog;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from Quarkus REST";
}
}Класс отвечает на запрос GET /hello строкой текста. Как его запустить, разберём в следующем уроке.
Добавление расширений
Расширения можно добавить и после создания проекта:
./mvnw quarkus:add-extension -Dextensions="hibernate-validator"Команда дописывает зависимость в pom.xml и печатает Extension io.quarkus:quarkus-hibernate-validator has been installed. Список всех расширений показывает ./mvnw quarkus:list-extensions.
Частая ошибка
Если не указать -DpackageName, генератор кладёт код в пакет, равный groupId, — com.example. Проект работает, но классы блога окажутся не в com.example.blog, и пути из уроков не совпадут. Пакет можно задать при генерации или потом переместить класс в нужную папку вместе со строкой package.