JavaRush /Курси /Модуль 5. Spring /Лекція 144: Практика: налаштування збірки Spring Boot зас...

Лекція 144: Практика: налаштування збірки Spring Boot застосунку з використанням Maven

Модуль 5. Spring
Рівень 22 , Лекція 3
Відкрита

Maven: нагадування

Основні поняття в Maven:

  • POM (Project Object Model) — це XML-файл конфігурації (pom.xml), що містить всю інформацію про ваш проєкт і його залежності.
  • Фази: Maven виконує збірку через набір етапів або фаз (compile, test, package та ін.).
  • Плагіни: розширюють функціональність Maven. Наприклад, плагін для пакування застосунку в jar/war.

Детальніше про Maven можна прочитати в офіційній документації Maven.


Підготовка Spring Boot проєкту

Створення Maven-проєкту

Для початку створимо Spring Boot застосунок, використовуючи Maven. Якщо ви вже маєте досвід роботи з Spring Initializr, це не займе багато часу.

  1. Створіть новий проєкт через Spring Initializr:
    • Виберіть Maven як тип збірки.
    • Вкажіть мову Java і версію Spring Boot (наприклад, 3.1.0).
    • Додайте залежності: Spring Web (для створення REST API).
    • Скачайте архів проєкту, розархівуйте і відкрийте його у вашій IDE.
  2. Перевірте структуру проєкту. Вона має виглядати приблизно так:

src/
└── main/
    ├── java/
    │   └── com/example/demo/  // Пакет для вашого додатку
    │       └── DemoApplication.java
    └── resources/
        └── application.properties
pom.xml                            // Ваш головний файл конфігурації Maven

* Будова pom.xml*

Нагадаємо будову файлу pom.xml. Він визначає всі залежності, плагіни і налаштування. Приклад вмісту:


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.0</version>
        <relativePath />
    </parent>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
  • groupId і artifactId: ідентифікують ваш проєкт.
  • spring-boot-starter-parent: базовий POM Spring Boot, що задає важливі налаштування за замовчуванням.
  • dependencies: список бібліотек, що використовуються в проєкті (наприклад, Spring Web).
  • spring-boot-maven-plugin: плагін для збірки Spring Boot застосунків.

Налаштування процесу збірки з Maven

Додавання фази збірки

Фаза збірки в Maven — це коли проєкт компілюється, тестується і пакується в виконуваний файл (наприклад, jar). Щоб переконатися, що все працює, виконайте команду:


mvn clean package

Що тут відбувається:

  1. clean: видаляє згенеровані раніше файли (target папка).
  2. package: компілює код (compile), запускає тести (test), а потім пакує проєкт в .jar файл, який можна запускати.

Після успішної збірки ви знайдете файл у папці target/, наприклад: demo-0.0.1-SNAPSHOT.jar. Запустіть його:


java -jar target/demo-0.0.1-SNAPSHOT.jar

Спробуйте відкрити в браузері http://localhost:8080. Якщо бачите помилку 404, не переймайтесь, це нормально — у нас поки немає контролерів!


Додавання користувацьких плагінів

Для покращення процесу збірки можна додати корисні плагіни. Наприклад, перевірити код на помилки або задати параметри JVM для розгортання. Додамо плагін для створення виконуваного jar-файлу:


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.example.demo.DemoApplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

Тепер jar-файл буде запускатися коректно, навіть якщо захочете передати в нього додаткові параметри.


Практична частина

Упакування застосунку з залежностями

Іноді застосунок посилається на зовнішні бібліотеки, які недоступні в середовищі виконання. Для цього можна створити fat jar (або uber jar), що включає всі залежності. У Spring Boot це робиться з коробки. Просто виконайте:


mvn clean install

Буде створено jar-файл, який включає всі залежності. Можна перевірити його розміри через:


ls -lh target/

Обробка тестів в процесі збірки

Maven автоматично запускає тести перед пакуванням. Давайте додамо простий тест:

1. Створіть файл src/test/java/com/example/demo/DemoApplicationTests.java з вмістом:


package com.example.demo;

import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

class DemoApplicationTests {

    @Test
    void contextLoads() {
        // Простий тест, щоб перевірити, чи завантажується контекст Spring
        assertThat(1).isEqualTo(1);
    }
}

2. Виконайте:


mvn clean test

Якщо все пройде успішно, Maven повідомить Tests run: 1, Failures: 0.


Що робити, якщо щось не працює?

Якщо при збірці або запуску виникають помилки, ось кілька типових проблем:

  • Помилка "Main class not found": перевірте, чи вказана коректна точка входу в секції mainClass плагіна.
  • Версії Java несумісні: переконайтеся, що використовувана JDK відповідає версії проєкту (в даному випадку Java 17).
  • Залежності не завантажуються: перевірте, чи є підключення до інтернету, і подивіться ваші Maven репозиторії.

Тепер у вас є готова збірка вашого Spring Boot застосунку з використанням Maven. У наступній лекції ми підключимо це до автоматичного пайплайна CI/CD за допомогою GitLab CI. Готуйтесь до автоматизації! 🚀

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ