Сборка и запуск jar
Команда mn:run нужна только при разработке. На сервер приложение отправляют одним файлом — исполняемым jar (его ещё называют fat jar или uber jar). Внутри лежат и ваши классы, и все библиотеки: Micronaut, Netty, драйвер H2. Чтобы запустить такой файл, на сервере нужна только Java 25.
Сборка
Из папки проекта:
./mvnw packageMaven компилирует код, запускает все тесты и упаковывает результат. В конце:
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
[INFO] --- shade:3.6.2:shade (default-shade) @ blog ---
[INFO] Replacing original artifact with shaded artifact.
[INFO] BUILD SUCCESSВ папке target появятся два файла:
| Файл | Размер | Что это |
|---|---|---|
blog-0.1.jar | около 23 МБ | Исполняемый jar со всеми библиотеками |
original-blog-0.1.jar | около 250 КБ | Только ваши классы |
Объединение библиотек выполняет плагин maven-shade-plugin, его настроил родительский micronaut-parent. Имя и версия файла берутся из <artifactId> и <version> в pom.xml. Тесты при сборке можно пропустить ключом -DskipTests, но лучше этого не делать.
Запуск
java -jar target/blog-0.1.jarINFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
INFO io.micronaut.runtime.Micronaut - Startup completed in 1439ms. Server Running: http://localhost:8080Приложение запущено и отвечает: curl http://localhost:8080/health вернёт {"status":"UP"}. Остановить — Ctrl+C.
Настройки сервера
Собранный jar одинаков для всех окружений, отличаются только настройки. Их передают переменными окружения при запуске:
MICRONAUT_ENVIRONMENTS=prod \
JWT_SECRET=pleaseChangeThisSecretForANewOne \
MICRONAUT_SERVER_PORT=8080 \
java -jar target/blog-0.1.jarВ журнале появится Established active environments: [prod], и Micronaut прочитает application-prod.properties, если он есть. Переменная MICRONAUT_SERVER_PORT — это ключ micronaut.server.port, записанный по правилам из урока о настройках. Так же задают адрес настоящей базы: DATASOURCES_DEFAULT_URL, DATASOURCES_DEFAULT_USERNAME, DATASOURCES_DEFAULT_PASSWORD.
| Что задать на сервере | Переменная |
|---|---|
| Окружение | MICRONAUT_ENVIRONMENTS=prod |
| Порт | MICRONAUT_SERVER_PORT |
| Секрет JWT | JWT_SECRET |
| База данных | DATASOURCES_DEFAULT_URL и другие |
Контейнер
Micronaut умеет сразу собрать образ Docker: ./mvnw package -Dpackaging=docker. Для этого на компьютере должен работать Docker. Образ содержит Java и ваш jar. Его запускают командой docker run -p 8080:8080 с именем образа, которое Maven напечатает в конце сборки.
Частая ошибка
Если по ошибке запустить файл без библиотек, Java не найдёт главный класс:
java -jar target/original-blog-0.1.jarno main manifest attribute, in target\original-blog-0.1.jarЗапускайте blog-0.1.jar — файл без приставки original.