Що таке Maven

Що таке Maven

Сьогодні ми розберемось що таке Maven, та чому Apache Maven все ще є основним інструментом для збірки Java додатків.

Для чого потрібен Maven

В певний період вивчення програмування настає момент, коли потрібно вийти за рамки розробки простого додатку і почати розробляти великі і складні системи. Стандартного функціоналу java вже недостатньо і потрібно використовувати сторонні бібліотеки та фреймворки. В такі моменти і потрібен maven.

Коли не було інструментів накшталт Maven, програмісти просто качали потрібні бібліотеки і підключали їх до свого проекту.

Згодом стало зрозуміло, що робити це не завжди зручно. Та й стежити за версіями бібліотек дуже непросто. Бібліотека, яку ви завантажили та підключили могла отримати оновлення. І для того, щоб оновити її в проекті, доводилося качати нову версію, видаляти стару версію зі свого проекту.

Тоді й прийшли на допомогу інструменти для збирання проектів. Більше не треба було качати та підключати. Достатньо було вказати посилання на бібліотеку, її версію і дозволити інструментам збірки скачати необхідні компоненти.

Перший збирач, котрий я пам’ятаю та котрий навіть користувався Ant. Його все ще можна побачити у старих проектах у деяких компаніях.

Після Ant лідерство очолив Maven. Більше того, він утримує його й донині. Зараз деякі проекти використовують Gradle, але мавен все ще дуже популярний і має попит.

Maven – інструмент для побудови та управління проектами Java. Крім підключення сторонніх бібліотек, він використовується для компіляції, створення jar, створення дистрибутива програми, генерації документації. Так сказано на офіційному сайті Apache Maven.

З чого складається Maven

Maven – інструмент із дуже великим функціоналом. У цій статті я зупинюся тільки на тих моментах, які мені здаються найбільш затребуваними щодо даного інструменту на початкових етапах.

Основою мавен проекту є файл pom.xml (Project Object Model), який розміщується в корені проекту. З розширення цього файлу ви вже могли здогадатися, що його формат XML.

Файл pom.xml повинен мати певне оформлення та структуру. Пропоную вивчити термінологію maven з прикладу типового 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>untitled3</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>untitled3 Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <properties>
        <jstl.version>1.2</jstl.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>19</source>
                    <target>19</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Структура pom.xml

Почнемо із самого початку. У самому верху документа вказується що це xml документ, його версія та кодування.

Далі йде тег project. У нього вже і будуть розміщуватися всі інші теги, які ви створюватимете.

Інформація по вашому проекту: groupId (імена та структура пакетів), artifactId (назва проекту), version (версія вашої програми), packaging (як буде зібрано проект):

  • jar – як звичайний джава архів,
  • war – веб архів, для web додатків

name та description – відповідно ім’я та опис проекту. Вони є не такими важливими і їх можна опускати.

До тег properties можна додавати властивості. Я ще називаю їхні константи. Тут можна визначити властивість та використовувати її далі в документі. Використовувати властивість потрібно за її іменем з таким синтаксисом:

${ім'я_властивості}

Далі йде тег dependencies. У ньому містяться всі залежності проекту: бібліотеки, фреймворки, модулі, інші проекти. Для додавання залежності потрібно скористатися синтаксисом:

<dependency> означає, що це залежність
             <groupId>org.projectlombok</groupId> груп айді необхідної залежності. Під час пошуку бібліотеки в Інтернеті ви її знайдете
             <artifactId>lombok</artifactId> артифакт Айді. Така сама доля як і груп айді.
             <version>1.18.2</version> версія бібліотеки
             <scope>provided</scope> зона видимості
         </dependency>

На прикладі вище видно, що перші три пункти: groupId, artifactId і version ви зможете отримати при знаходженні бібліотеки.

scope – це область видимості нашої бібліотеки у проекті. Цей параметр дозволяє вказати Мавен коли і для чого використовувати цю залежність. Усього є 6 областей видимості:

  • compile – це область видимості за замовчуванням. Залежності з такою зоною видимості будуть використовуватися і при виконанні і при тестуванні і навіть при використанні цієї залежності з інших проектів.
  • provided – майже як compile. Єдина її відмінність у тому, що залежність з даною зоною видимості не буде додана в пакет.
  • runtime – залежність підключатиметься лише під час виконання коду.
  • test – такою зоною видимості відзначаються залежності для тестів. Наприклад, Mockito, JUnit.
  • system – залежність, яка буде у середовищі java завжди.
  • import – для імпорту залежностей із інших артефактів.

Тег, який призначений для підключення плагінів – build. До нього потрібно додати plugins, а вже в цей тег конкретний плагін. Синтаксис дуже нагадує синтаксис залежностей. Тільки на відміну від тегу, dependency, потрібно використовувати plugin. З приводу плагінів скажу те саме, що говорив вище. Ви знаходитимете їх у мережі залежно від своїх потреб та потреб. І знаходити ви їх вже в потрібному форматі. Плагіни дозволяють розширити функціонал Maven та додати певну автоматизацію до збірки.

Як працює Maven

Спочатку ви створюєте файл pom.xml для вашого проекту. В даному файлі ви визначаєте властивості проекту, залежності, плагіни, репозиторії та інші конфігураційні параметри, які ми розглянули вище.

Maven використовує конфігурацію з файлу pom.xml для зборки вашого проекту. Він автоматично знаходить залежності проекту з репозиторіїв, завантажує їх і компілює ваш код. Результатом збирання є артефакт проекту, такий як JAR-файл або WAR-файл. Який ви згодом можете запустити.

Maven автоматично завантажує необхідні залежності для вашого проекту з централізованих репозиторіїв, таких як Maven Central Repository. Ви вказуєте залежності у файлі pom.xml, і Maven забезпечує їх завантаження і включення до вашого проекту. Розробники бібліотек і фреймворків заздалегідь завантажують свої бібліотеки до центрального репозиторію. Щоб мавен знайшов їх фреймворк і ви могли з ним легко працювати.

Maven надає стандартний життєвий цикл проекту з певними фазами, такими як компіляція, тестування, упакування, розгортання і т. д. Ви можете викликати ці фази з командного рядка або з IDE.

Також Maven дозволяє вам створювати багатомодульні проекти, де кожен модуль може мати свій власний pom.xml. Ви також можете використовувати різні плагіни для розширення функціональності Maven і налаштування власних скриптів збирання.

Початок роботи з Maven

Щоб почати працювати з Maven, потрібно встановити цей інструмент собі на компʼютер. Це дозволить створювати та збирати програми прямо з командного рядка. Останню версію можна завантажити з офіційного сайту, який я вказав вище. Архів можна помістити до будь-якої папки на диску.

Далі потрібно створити змінну M2_HOME у Path, як ви це робили при першій установці java.

При бажанні можна використовувати вбудовану підтримку мавен від intellij idea або eclipse. Тоді вам не потрібно його встановлювати на комп’ютер. Однак в такому разі через командний рядок команди мавен викликати не вийде.

Тепер, щоб створити maven проект, потрібно зайти в свою ide: File->New Project. У вас це може бути Netbeans, Intellij idea, Eclipse.

У вікні знаходимо і обираємо Maven і далі нам скоріше за все, пропонується вибрати архетип. Якщо збираєтеся писати веб-додаток – намагайтеся вибрати архетип для веб-додатку. Якщо ж інше – вибирайте із потреб. Можна без архетипу. Архетип означає, що структура програми (розміщення, кількість папок) буде відповідати типу програми, архетип якого ви виберете. В даній темі для нас це не важливо.

створення нового maven проекту в intellij idea community edition

Вказуємо groupId, artifactId, даємо нашому проекту ім’я та розташування і тиснемо Create. Після цього ви побачите, що створилася структура програми і в корені лежить файл pom.xml.

Для того, щоб скомпілювати код, який ви напишете у своєму проекті, можна використовувати команду maven: mvn clean install. Якщо ви використовуєте інструмент від intellij idea, можна просто вибрати вкладку мавен у розділі інструментів, далі перейти до lifesycle – > clean. Після цього вибрати у тій же вкладці install.

результат запуску команди mvn clean install

Після того, як побачите що збірка успішна, в проекті зʼявиться директорія target. Саме в неї Maven помістив зібраний архів або jar файл.

Далі ви можете використовувати збірку за власними потребами.

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

Втомився вчити Java сам?

Переглянь нашу сторінку з курсами! Можливо щось сподобається 😉

Останні записи


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *


Категорії