Создание и запуск проекта
Проект Micronaut не собирают вручную: его создаёт официальный генератор Micronaut Launch. Он выдаёт готовый pom.xml с нужными версиями, главный класс, файл настроек и первый тест. Генератор доступен на сайте и как консольная программа mn — результат одинаковый.
Через сайт
Откройте launch.micronaut.io и выберите:
| Поле | Значение |
|---|---|
| Application Type | Micronaut Application |
| Java Version | 25 |
| Name | blog |
| Base Package | com.example |
| Micronaut Version | 5.2.1 |
| Language / Build / Test | Java / Maven / JUnit |
Дополнительные возможности (Features) пока не добавляйте — мы будем подключать их по одной и смотреть, что каждая меняет. Нажмите Generate Project → Download Zip и распакуйте архив в папку blog.
Через консоль
Если установлен Micronaut CLI (например, через SDKMAN: sdk install micronaut), тот же проект создаёт одна команда:
mn create-app com.example.blog --build=maven --lang=java --jdk=25
cd blogПоследняя часть имени (blog) становится именем проекта и папки, остальное (com.example) — пакетом.
Что внутри
blog/
├── pom.xml сборка Maven, родитель micronaut-parent 5.2.1
├── mvnw, mvnw.bat обёртка Maven
├── micronaut-cli.yml какие возможности выбраны в генераторе
└── src/
├── main/java/com/example/Application.java
├── main/resources/application.properties
├── main/resources/logback.xml настройки журнала
└── test/java/com/example/BlogTest.javaГлавный класс запускает приложение:
// src/main/java/com/example/Application.java
package com.example;
import io.micronaut.runtime.Micronaut;
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class, args);
}
}Micronaut.run создаёт контекст с объектами приложения и запускает HTTP-сервер Netty. Файл настроек пока содержит одну строку — micronaut.application.name=blog.
Запуск
Из папки проекта выполните:
./mvnw mn:runВ Windows (cmd или PowerShell) команда — mvnw.bat mn:run. Первый запуск скачивает зависимости и занимает пару минут. Затем Maven показывает Watching for changes in [src\main\java, src\main\resources], баннер и строку:
INFO io.micronaut.runtime.Micronaut - Startup completed in 575ms. Server Running: http://localhost:8080Цель mn:run следит за файлами: после сохранения исходника приложение пересобирается и перезапускается само. Остановить сервер — Ctrl+C.
Первый запрос
Контроллеров ещё нет, но сервер уже отвечает:
curl -i http://localhost:8080/HTTP/1.1 404 Not Found
Content-Type: application/json
{"_links":{"self":[{"href":"/","templated":false}]},"_embedded":{"errors":[{"message":"Page Not Found"}]},"message":"Not Found"}Ответ 404 в формате JSON — значит, сервер работает, просто по адресу / ничего нет. Так Micronaut по умолчанию описывает все ошибки.
Частая ошибка
Если порт 8080 уже занят другой программой (например, вторым запущенным приложением), старт прерывается:
ERROR i.m.h.server.netty.NettyHttpServer - Unable to start server. Port *:8080 already in use.
ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Unable to start Micronaut server on *:8080Остановите старый процесс или выберите другой порт строкой micronaut.server.port=8081 в application.properties.