Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

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

Проект 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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.