Сборка из исходников
GetOLT написан на Spring Boot 3 + Java 21. Если вы получили доступ к репозиторию (по запросу через support@getolt.online), эта страница описывает, как поднять локальный dev-стенд за 10 минут.
Для эксплуатации в проде сборка из исходников не нужна — используйте готовый Docker-образ через Production-deploy или bare-metal-инсталлер.
Что должно быть установлено
| Инструмент | Версия | Зачем |
|---|---|---|
| JDK | 21 (LTS) | компиляция и запуск Spring Boot |
| Maven | 3.6+ | сборка и менеджер зависимостей |
| Docker | 20.10+ | dev-MySQL через docker-compose.dev.yml |
| Docker Compose | v2 | плагин docker-compose-plugin |
| Git | любой | клонирование репозитория |
Проверить:
java -version # должно показать 21mvn -v # должно показать Maven 3.6+docker --versionJDK 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 репозитория> getoltcd 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_devdocker 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 может работать в одном из режимов:
- Disabled —
license.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 # unitmvn verify -P integration # интеграционные (поднимают тестовый MySQL)Подробнее про тестовую стратегию — в Contributing.
Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.
Разработка: gmasich.ru