JavaRush/Java блог/Random UA/Частина 4. Основи Maven
Professor Hans Noodles
41 рівень

Частина 4. Основи Maven

Стаття з групи Random UA
учасників
Цей матеріал - частина циклу "Введення в Enterprise-розробку". Попередні статті: Частина 4. Основи Maven - 1Maven – інструмент для управління та збирання проектів – справжній помічник Java-програміста. Він полегшує життя девелоперу всіх стадіях роботи: від створення структури проекту та підключення необхідних бібліотек до розгортання продукту на сервері. При роботі з будь-яким фреймворком доведеться використовувати Maven. Тому давай сьогодні розберемо його основні функції та подивимося, як їх потрібно використовувати.

Покрокова установка Maven

  1. Для початку потрібно встановити Maven, завантаживши його за цим посиланням .

  2. Далі необхідно розпакувати завантажений архів та встановити змінної оточення M2_HOME посилання на місцезнаходження розпакованого архіву. Наприклад, C:\Program Files\maven\

  3. Щоб перевірити, що все встановлено, у командному рядку пропиши:

    mvn -version

  4. Якщо з'явиться інформація про версії Maven, Java тощо, все готове до роботи.

  5. Тепер відкрий IntelliJIDEA та створи новий проект. У першому ж вікні вибери Maven:

    Частина 4. Основи Maven - 2
  6. Натисніть Next і заповни наступне діалогове вікно:

    Частина 4. Основи Maven - 3
  7. Далі стандартно створи проект у необхідному місці.

    Після того, як проект створився, зверніть увагу на його структуру:

    Частина 4. Основи Maven - 4
Це стандартна структура для Maven-проекту :
  • у папці src/main/java містяться java-класи;
  • в src/main/resources - ресурси, які використовує наш додаток (HTML-сторінки, картинки, таблиці стилів тощо);
  • src/test - для тестів.
Ще зверніть увагу на файл під назвою pom.xml . Це і є головний файл для управління Мавеном . Всі описи проекту містяться тут. Поки що там не надто багато інформації, але зараз ми її додаватимемо.

Управління залежностями в Maven

Можливо, ти зустрічав словосполучення "менеджер залежностей" або "dependency manager". Мавен усе це вміє. Завдяки Мавену тобі не потрібно витрачати купу часу на пошуки потрібної бібліотеки в інтернеті, качати її, а потім підключати до проекту: достатньо додати необхідну список залежностей Мавена. Скажімо, тобі в проекті потрібна бібліотека Apache Commons IO для спрощеної роботи з файлуми. Щоб додати бібліотеку, напиши п'ять рядків у pom.xml:
<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.6</version>
</dependency>
Тепер твій pom.xml має виглядати так:
<?xml version="1.0" encoding="UTF-8"?>
<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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
Після цього дозволи IntelliJ IDEA імпортувати залежність (діалогове вікно має з'явитися у нижньому правому кутку). Тепер бібліотека готова до використання:
import org.apache.commons.io.FileUtils;

import java.io.File;

public class TestMaven {
   public static void main(String[] args) {
       File tempDirectory = FileUtils.getTempDirectory();
   }
}
Всі наступні залежності теж повинні записуватись усередині тега <dependencies>. У тебе може виникнути питання: як дізнатися інформацію, яку потрібно вказувати про бібліотеку всередині тега <dependency>? Тут усе просто. У таких випадках завжди задаються три параметри: groupId, artifactId та version. Дізнатися ці параметри можна двома способами:
  1. На веб-сайті бібліотеки. Якщо нам потрібний Apache Commons IO, переходимо на офіційний сайт, вибираємо вкладку Dependency Information. Тут є вся необхідна інформація — її можна просто скопіювати та додати до нашого розділу dependencies.

  2. У Maven-репозиторії . У пошуку введи "apache commons io", і ти побачиш усі доступні версії бібліотеки. Після вибору потрібної, просто скопіюй:

    <dependency>
               <groupId>commons-io</groupId>
               <artifactId>commons-io</artifactId>
               <version>2.6</version>
           </dependency>

    та додай у свій pom.xml.

Види Maven-репозиторіїв

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

Складання Java-проекту за допомогою Maven

Можливо, новачкові ця можливість здасться безглуздою. Для чого це потрібно, якщо є IDE? Але немає! По-перше, на сервері, на якому доведеться збирати програму, може не бути не те що середовища розробки, а й графічного інтерфейсу. По-друге, на великих проектах Мавен краще справляється із завданнями щодо складання проекту. Тому не будемо нудити себе очікуванням, а розглянемо процес складання програми з використанням Maven.

Фази

Процес побудови програми називають життєвим циклом Maven-проекту, і складається з фаз (phase). Подивитися на них ти можеш у IDEA, натиснувши на Maven>example>Lifecycle у правому верхньому кутку: Частина 4. Основи Maven - 5Як бачиш, існує 9 фаз:
  1. clean - видаляються всі скомпіловані файли з каталогу target (місце, в якому зберігаються готові артефакти);
  2. validate — перевірка, чи вся інформація доступна для складання проекту;
  3. compile - компілюються файли з вихідним кодом;
  4. test – запускаються тести;
  5. package - упаковуються скомпіловані файли (jar, war і т.д. архів);
  6. verify - виконуються перевірки для підтвердження готовності упакованого файлу;
  7. install - пакет міститься в локальний репозиторій. Тепер він може використовуватись іншими проектами як зовнішня бібліотека;
  8. site - створюється документація проекту;
  9. deploy - зібраний архів копіюється у віддалений репозиторій.
Усі фази виконуються послідовно: не можна запустити, скажімо, четверту фази, доки завершені фази 1-3. Виконати запуск фази можна двома способами:
  • через командний рядок:

    mvn package

    Частина 4. Основи Maven - 6
  • використовуючи Intellij IDEA:

    Частина 4. Основи Maven - 7

    До запуску пакета виконуються фази validate, compile, test. Виняток - фаза clean. Її бажано викликати перед кожним новим складанням проекту. Фази можна перерахувати через пропуск:

    mvn clean package.

Також кожна фаза має пре- і пост-фази: наприклад, pre-deploy, post-deploy, pre-clean, post-clean, але використовуються вони досить рідко. Крім цього, кожна фаза має цілі (goal). Стандартні цілі закладені за умовчанням, додаткові додаються Maven-плагінами. Іноді під час якоїсь фази необхідно виконати додатковий функціонал. Для цього існують Maven-плагіни. Список офіційних плагінів можна переглянути на сайті Мавена . Але знай, що ще є багато плагінів, які можна знайти на сторонніх ресурсах. Ну і природно, за якоїсь екзотичної необхідності, у тебе завжди залишається можливість написати такий плагін самому .

Плагіни

Щоб додати Мавен-плагін до проекту, його опис, аналогічно до залежностей, потрібно помістити в pom.xml в тег <build> і <plugins>. Наприклад, нам потрібен плагін для перевірки того, що всі наші зовнішні бібліотеки використовують останні версії. Трохи пошукавши в інтернеті, можна знайти цей плагін з інструкцією використання. Встановимо його groupId, artifactId і version. Пропишемо, які цілі він має виконати і на якій фазі. У нашому випадку перевірка залежностей у поточному pom.xml встановлена ​​на validate фазі. Тепер наш “пам'ятник” виглядає так:
<?xml version="1.0" encoding="UTF-8"?>
<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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <build>
       <plugins>
           <plugin>
               <groupId>com.soebes.maven.plugins</groupId>
               <artifactId>uptodate-maven-plugin</artifactId>
               <version>0.2.0</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>dependency</goal>
                       </goals>
                       <phase>validate</phase>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
Ми так само можемо продовжувати роботу над нашим проектом. Але спробуємо змінити версію Apache Commons IO на 2.0 і запустити збірку проекту. Отримаємо: [ERROR] Failed to execute goal com.soebes.maven.plugins:uptodate-maven-plugin:0.2.0:dependency (default) on project example: There is a more up-to-date version ( 2.6 ) of the dependency commons-io:commons-io:2.0 available. -> [Help 1] Тут у нас помилка збирання, викликана плагіном. У повідомленні до помилки зазначено, що ми використовуємо версію 2.0 за наявності 2.6. Взагалі Мавен дуже корисний інструмент. Можливо, спочатку він здасться важким у використанні, але практикуйся, створюй свої проекти під керівництвом Мавена, і через деякий час ти дуже задоволений результатом. У цій статті навмисне втрачено багато деталей про Мавен — ми сконцентрувалися на найнеобхіднішому. Але досконалості немає межі: почитати більше про Maven можна на офіційному сайті продукту . Частина 5. Сервлети. Пишемо просте веб-додаток Частина 6. Контейнери сервлетів Частина 7. Знайомство з патерном MVC (Model-View-Controller) Частина 8. Пишемо невелику програму на spring-boot
Коментарі
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Для цієї сторінки немає коментарів.