Перейти к содержимому

Сборка из исходников

GetOLT написан на Spring Boot 3 + Java 21. Если вы получили доступ к репозиторию (по запросу через support@getolt.online), эта страница описывает, как поднять локальный dev-стенд за 10 минут.

Для эксплуатации в проде сборка из исходников не нужна — используйте готовый Docker-образ через Production-deploy или bare-metal-инсталлер.

Что должно быть установлено

ИнструментВерсияЗачем
JDK21 (LTS)компиляция и запуск Spring Boot
Maven3.6+сборка и менеджер зависимостей
Docker20.10+dev-MySQL через docker-compose.dev.yml
Docker Composev2плагин docker-compose-plugin
Gitлюбойклонирование репозитория

Проверить:

Окно терминала
java -version # должно показать 21
mvn -v # должно показать Maven 3.6+
docker --version

JDK 21 ставится из adopt-репозитория или вендора по выбору. Для macOS: brew install openjdk@21. Для Debian/Ubuntu: apt install openjdk-21-jdk. Для RHEL/CentOS: dnf install java-21-openjdk-devel.

Клонирование

URL репозитория выдаётся отдельно при получении доступа — он не публичный по умолчанию. После клонирования:

Окно терминала
git clone <ваш URL репозитория> getolt
cd getolt

Поднять dev-MySQL

В корне репозитория лежит docker-compose.dev.yml — он поднимает только MySQL 8 на порту 3307, чтобы не конфликтовать с системным MySQL, если он у вас уже стоит.

Окно терминала
./start-dev-db.sh
# или эквивалент:
docker compose -f docker-compose.dev.yml up -d

Проверить, что БД поднялась:

Окно терминала
docker ps --filter name=getolt_mysql_dev
docker exec getolt_mysql_dev mysqladmin ping -h localhost -uroot -prootpass
# ожидается: mysqld is alive

База называется getolt_db, пользователь — getolt, пароль по умолчанию — getolt123 (можно переопределить через переменные MYSQL_USER / MYSQL_PASSWORD / MYSQL_ROOT_PASSWORD перед запуском).

Запуск приложения

В dev-профиле приложение читает application-dev.properties и подключается к локальному MySQL на 3307:

Окно терминала
mvn spring-boot:run -Dspring-boot.run.profiles=dev

Первый запуск займёт пару минут (Maven скачает зависимости, Spring Boot создаст схему). Когда увидите в логах:

Tomcat started on port(s): 8088 (http) with context path ''
Started GetoltApplication in 12.345 seconds

— откройте http://localhost:8088. Должна показаться форма логина.

LicenseGuard в dev

Готовый продукт защищён модулем LicenseGuard — он проверяет JWT-лицензию через phone-home на license.getolt.online. В dev-профиле LicenseGuard может работать в одном из режимов:

  • Disabledlicense.guard.enabled=false в application-dev.properties, проверка пропускается. Используется для повседневной разработки.
  • Local-issuer — JWT выпускается локально с тестовой парой ключей. Используется для тестирования сценариев лицензии без обращения к prod license-server.

Подробности — в README репозитория, раздел LicenseGuard / Dev mode.

Hot reload

Spring Boot DevTools уже подключён. Изменения в Java-коде применяются после mvn compile (или после автокомпиляции в IDE — IntelliJ / VS Code с расширением Extension Pack for Java). Изменения в Thymeleaf-шаблонах и статике подхватываются без перезапуска — spring.thymeleaf.cache=false в dev-профиле уже выставлен.

Сборка production-jar

Для упаковки в jar-артефакт под deploy:

Окно терминала
mvn clean package -DskipTests

На выходе — target/getolt-grade.jar (~50 MB), исполняемый fat-jar. Запуск:

Окно терминала
java -jar target/getolt-grade.jar --spring.profiles.active=prod

Для prod нужны переменные окружения из application-prod.properties (SPRING_DATASOURCE_URL, LICENSE_SERVER_URL, и т.д.) — стандартный паттерн используется в Production-deploy и bare-metal installer’ах.

Известные грабли

  • Порт 3307 уже занят. Если у вас системный MySQL или другой dev-контейнер слушает 3307 — переопределите MYSQL_PORT перед docker compose up или остановите соседний сервис.
  • mvn spring-boot:run падает с Could not find or load main class. Запустите mvn clean compile отдельно — иногда кэш Maven рассинхронизируется.
  • 403 на /login сразу после старта. В dev-профиле локальный admin берётся из GETOLT_ADMIN_USERNAME / GETOLT_ADMIN_PASSWORD. Если переменные не выставлены — используется дефолт из application-dev.properties.

Тесты

Окно терминала
mvn test # unit
mvn verify -P integration # интеграционные (поднимают тестовый MySQL)

Подробнее про тестовую стратегию — в Contributing.

Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.

Разработка: gmasich.ru

Политика конфиденциальности · Пользовательское соглашение