Encodera

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

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

Оглавление

Сборка и запуск jar

Команда mn:run нужна только при разработке. На сервер приложение отправляют одним файлом — исполняемым jar (его ещё называют fat jar или uber jar). Внутри лежат и ваши классы, и все библиотеки: Micronaut, Netty, драйвер H2. Чтобы запустить такой файл, на сервере нужна только Java 25.

Сборка

Из папки проекта:

./mvnw package

Maven компилирует код, запускает все тесты и упаковывает результат. В конце:

[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.jar
INFO  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
Секрет JWTJWT_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.jar
no main manifest attribute, in target\original-blog-0.1.jar

Запускайте blog-0.1.jar — файл без приставки original.

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

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