1. Инициализация проекта, конфигурация сборки и основы развертывания приложения
Инициализация проекта, конфигурация сборки и основы развертывания приложения
Добро пожаловать на курс Fullstack-разработка на Kotlin: от настройки до деплоя. Это первая статья нашего цикла, в котором мы пройдем путь от пустой папки до работающего веб-приложения с базой данных, API и клиентской частью.
Сегодня мы заложим фундамент. Многие новички недооценивают этап настройки, стремясь скорее написать первый код. Однако правильно инициализированный проект и настроенная среда сборки сэкономят вам часы отладки в будущем. Мы разберем, как создать проект на Spring Boot с использованием языка Kotlin, настроим систему сборки Gradle и научимся упаковывать наше приложение в Docker-контейнер.
Инструментарий разработчика
Прежде чем мы начнем, убедитесь, что у вас установлены необходимые инструменты. Для разработки на Kotlin нам понадобится надежная база.
Вам потребуются:
Создание проекта через Spring Initializr
В мире Java и Kotlin стандартом для создания серверных приложений является фреймворк Spring Boot. Он берет на себя огромную часть рутинной конфигурации, позволяя разработчику сосредоточиться на бизнес-логике.
Для генерации каркаса проекта мы воспользуемся инструментом Spring Initializr. Это веб-сервис (интегрированный также прямо в IntelliJ IDEA), который создает структуру папок и файлы конфигурации.
Параметры генерации
При создании нового проекта выберите следующие настройки:
* Project: Gradle - Kotlin. Мы будем использовать систему сборки Gradle с DSL (предметно-ориентированным языком) на Kotlin. Это современный стандарт, который дает автодополнение и проверку типов прямо в файлах настройки сборки.
* Language: Kotlin.
* Spring Boot: Выберите последнюю стабильную версию (без пометок SNAPSHOT или M1).
* Group: Например, com.example. Это уникальный идентификатор вашей организации или проекта.
* Artifact: Например, kotlin-fullstack. Это название самого приложения.
* Packaging: Jar.
* Java: 17 или 21 (в зависимости от того, что вы установили).
Подключение зависимостей
На этом этапе нам нужно добавить библиотеки, которые понадобятся в будущем. В Spring Boot они называются «стартерами» (Starters).
Добавьте следующие зависимости:
После нажатия кнопки «Generate» вы получите архив. Распакуйте его и откройте папку проекта в IntelliJ IDEA.
!Структура стандартного Spring Boot проекта с ключевыми директориями и файлами конфигурации.
Разбор конфигурации сборки (Gradle Kotlin DSL)
Сердцем вашего проекта является файл build.gradle.kts. Если вы раньше использовали Maven (файл pom.xml) или Gradle на Groovy, то синтаксис Kotlin DSL покажется вам более строгим, но и более понятным.
Давайте разберем ключевые блоки этого файла.
Плагины
В блоке plugins подключаются расширения, необходимые для сборки:
Здесь мы видим плагины для Spring Boot, управления зависимостями и самого языка Kotlin. Обратите внимание на плагины plugin.spring и plugin.jpa. Они автоматически делают классы Kotlin «открытыми» (open) там, где это нужно фреймворку Spring, так как по умолчанию все классы в Kotlin финальные и от них нельзя наследоваться.
Зависимости
Блок dependencies описывает библиотеки, которые использует ваш проект:
* implementation — зависимость нужна для компиляции и запуска.
* runtimeOnly — зависимость нужна только во время работы (например, драйвер БД).
* testImplementation — зависимость нужна только для тестов.
Библиотека jackson-module-kotlin критически важна: она позволяет Spring корректно преобразовывать JSON в Kotlin-классы (Data Classes) и обратно, понимая их конструкторы.
Структура проекта
Внутри папки src вы найдете две основные директории:
main/kotlin: Здесь будет жить весь ваш код. Spring уже создал главный класс приложения, обычно он называется KotlinFullstackApplication.kt (или похоже, в зависимости от имени артефакта).main/resources: Здесь хранятся настройки и статические файлы. Главный файл настроек — application.properties. Я рекомендую сразу переименовать его в application.yml, так как формат YAML более читаем и удобен для иерархических структур.Главный класс приложения выглядит примерно так:
Аннотация @SpringBootApplication — это магия, которая говорит: «Это точка входа. Просканируй этот пакет и подпакеты, найди все компоненты и запусти сервер».
Основы развертывания: Docker
Современная разработка немыслима без контейнеризации. Docker позволяет упаковать ваше приложение вместе со всеми необходимыми ему версиями Java и библиотек в единый образ. Это гарантирует, что если приложение работает у вас на машине, оно будет работать и на сервере.
Создание Dockerfile
Создайте файл с именем Dockerfile (без расширения) в корне вашего проекта. Это инструкция для сборки образа.
Разберем команды:
* FROM: указывает, на основе какой операционной системы и версии Java мы строим наш образ. alpine — это очень легкая версия Linux, что уменьшает размер итогового файла.
* WORKDIR: устанавливает текущую папку внутри контейнера.
* COPY: берет файл с вашего компьютера (хоста) и помещает его в файловую систему образа.
* ENTRYPOINT: команда, которая выполнится при старте контейнера.
Сборка и запуск
Теперь давайте соберем проект и запустим его в Docker.
.\gradlew clean build
* macOS/Linux: ./gradlew clean build Эта команда скомпилирует Kotlin-код, прогонит тесты и создаст исполняемый файл в папке build/libs.
-t задает имя (тег) для образа, а точка . в конце указывает, что Dockerfile находится в текущей папке.-p 8080:8080 «пробрасывает» порт. Это значит, что порт 8080 на вашем компьютере будет перенаправлять запросы на порт 8080 внутри контейнера.Если вы все сделали правильно, в консоли вы увидите логи запуска Spring Boot, и приложение будет доступно по адресу http://localhost:8080.
!Процесс трансформации исходного кода в работающий Docker-контейнер.
Заключение
Мы успешно инициализировали проект, разобрались с build.gradle.kts и подготовили Dockerfile для деплоя. Теперь у нас есть надежная основа для разработки.
В следующей статье мы перейдем к проектированию данных: создадим сущности (Entities), подключим реальную базу данных PostgreSQL и настроим автоматическое создание таблиц.