Знижка 50% усі тарифи, обмежений час. Починаючи від $2.48/mo
18 хв залишилось
Веб- і бізнес-додатки

Maven без секретів: команди, параметри та шпаргалка для ефективної розробки

Ада Лавгуд By Ада Лавгуд Читання за 18 хвилин Оновлено 23 лютого 2025
Довідник команд mvn

Автоматизація та інструменти розробки – це неодмінна частина будь-якого проєкту, і в цьому блозі ми хочемо обговорити Maven. Maven – це потужний інструмент автоматизації для проєктів Java. Він спрощує процес збирання та створює єдину структуру для проєктів. Це робить управління та розуміння проєктів легшим. Цей блог охоплює майже все про Maven, включаючи широкий спектр команд та опцій, які оптимізують ваш робочий процес розробки. Ми розглянемо різні аспекти, такі як управління серверами та контейнерами, управління системою контролю версій (SCM) та GPG для підпису артефактів. Крім того, ми вивчимо спеціалізовані команди для управління плагінами, збирання та розповсюдження, а також генерування сайтів та звітів проєктів. Отже, в кінці цього посібника у вас буде повне розуміння команд та опцій Maven.

Огляд Maven; Життєвий цикл проєкту

У їдишській мові слово Maven означає «накопичувач знань». Це значення дуже добре пояснює можливості Maven як інструменту автоматизації для проектів Java. Maven робить процес збирання та керування проектом дуже простим. І робить це шляхом автоматизації різних завдань та надання єдиної системи збирання.

Щоб краще зрозуміти, як працює Maven, давайте розберемо концепцію Модель об'єкту проекту (POM). POM — це XML-файл, який містить інформацію про проект та деталі конфігурації. Maven використовує POM як основу своєї роботи. Отже, Maven отримує залежності проекту, директорію збирання, директорію вихідного коду, директорію тестів та цілі з цього джерела для роботи.

Після визначення проекту та його залежностей з pom.xml, кожного разу, коли ви запускаєте команду Maven, вона читає pom-файл, щоб виконати специфічну фазу збирання цієї команди. Існує довгий життєвий цикл проекту від моменту його створення до його фактичного розгортання. Цей цикл визначає послідовність фаз, через які повинен пройти ваш проект. Кожна фаза являє собою етап у цьому циклі та виконує конкретні завдання, такі як компіляція вихідного коду, запуск тестів та упакування коду у розповсюджувальний формат. Все це робить життєвий цикл проекту в Maven важливою концепцією для розуміння. Давайте докладніше розглянемо фази життєвого циклу Maven:

  1. Перевірити: На цій фазі перевіряється корректність проекту та наявність всієї необхідної інформації.
  2. Компіляція: На цій фазі компілюється вихідний код проекту.
  3. Тест: На цій фазі тестується скомпільований вихідний код за допомогою відповідного фреймворку модульного тестування.
  4. Упаковка: На цій фазі скомпільований код упаковується у його розповсюджувальний формат (наприклад, JAR, WAR).
  5. Встановлення: На фазі встановлення пакет встановлюється у локальне сховище та стає доступним для інших проектів на одній машині.
  6. Розгорнути: На цій фазі остаточний пакет копіюється у віддалене сховище для спільного використання іншими розробниками та проектами.

Кожна з цих фаз має відповідну mvn команду, яку ми розглянемо в наступних розділах нашої шпаргалки по Maven. Це будуть найважливіші команди для керування процесом збирання вашого проекту.

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

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

Як Maven керує залежностями

Maven використовує централізоване сховище, відоме як Центральний репозиторій Maven, де розташована величезна кількість бібліотек та плагінів. Коли проекту потрібна залежність, Maven автоматично завантажує потрібні бібліотеки з центрального сховища та зберігає їх у локальному сховищі. Це локальне сховище — це кеш на вашій машині, який скорочує час завантаження для майбутніх збирань.

Залежності в Maven задаються у pom.xml файлі у розділі <dependencies> . Кожна залежність визначається набором координат: groupId, artifactId, і version.

Області залежностей

Під час роботи з Maven ви можете вказувати область видимості залежностей. Цей чинник визначає видимість у classpath та фазу життєвого циклу залежності. Отже, ви можете знати, яка фаза потребує цієї залежності. Загальні області видимості:

  • Компіляція: Це область видимості за замовчуванням, яка використовується, коли область не вказана. Залежності з цією областю видимості доступні на всіх фазах збирання та включаються до остаточного пакета.
  • Надано: Ми очікуємо, що залежності з цією областю будуть готові у середовищі виконання. Вони використовуються під час компіляції, але не включаються в остаточний пакет.
  • Час виконання: Ці залежності не потрібні для компіляції, але необхідні під час виконання. Вони включаються в classpath виконання.
  • Тест: Ці залежності потрібні лише для компіляції та запуску тестів. Вони не включаються в середовище виконання або остаточний пакет.
  • Система: Системна область схожа на надану область, але ви повинні надати JAR, який буде використовуватися Maven. JAR повинен бути присутній у системній стежці.

Транзитивні залежності

Однією з потужних можливостей Maven є можливість обробляти транзитивні залежності. Коли проект оголошує залежність, Maven автоматично включає не лише цю залежність, але й її залежності, залежності їхніх залежностей і так далі. Цей ланцюг залежностей називається транзитивними залежностями. Щоб уточнити, уявіть, що ваш проект залежить від spring-boot-starter-web. Maven також включить усі бібліотеки, від яких залежить spring-boot-starter-web, такі як Spring Core, Spring MVC та Jackson.

Тепер, коли ви знаєте теорію управління залежностями в Maven, давайте подивимось, як з ними працювати на практиці:

mvn dependency:resolve

Це comando вирішує та виводить усі залежності, необхідні для вашого проекту. Ви можете його використати, щоб побачити, від яких бібліотек залежить ваш проект, і переконатися, що все в порядку.

mvn dependency:tree

За допомогою цієї команди можна отримати структуру дерева залежностей вашого проекту. Вона показує, як пов'язана кожна залежність, і допомагає виявити потенційні конфлікти.

mvn dependency:analyze

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

Функції управління залежностями в Maven полегшують ваш процес розробки. Вони також допомагають вам уникнути типових помилок і зберігати чисту, добре організовану структуру проекту.

Виконання

Виконання в Maven передбачає запуск специфічних завдань або цілей у проекті. Ці завдання можуть варіюватись від запуску програм Java до виконання зовнішніх скриптів або команд. Maven надає потужні плагіни, які спрощують ці виконання. Це ще одна особливість Maven, що робить його чудовим інструментом для автоматизації різних частин вашого робочого процесу. Отже, давайте розглянемо ключові команди Maven для виконання:

mvn exec:java

Ця команда використовується для виконання класу Java у вашому проекті. Вона корисна для запуску основних класів або тестування окремих програм Java без їх попередньої упаковки.

mvn exec:exec

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

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

Управління серверами та контейнерами

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

mvn tomcat7:run

Ця команда запускає ваш веб-застосунок за допомогою Apache Tomcat. Вона корисна для локальної розробки та тестування та дозволяє швидко розгортати та тестувати ваш веб-застосунок без налаштування повноцінного серверного середовища.

mvn jetty:run

Ця команда запускає ваш веб-застосунок за допомогою популярного веб-сервера під назвою Jetty. Як і Tomcat, Jetty чудовий для розробки та тестування завдяки його легкій вазі та швидким можливостям розгортання.

Як працює управління серверами та контейнерами

Maven використовує плагіни, такі як tomcat7-maven-plugin та jetty-maven-plugin для управління операціями сервера. Ці плагіни дозволяють вам запускати, зупиняти та налаштовувати сервери як частину вашого життєвого циклу збірки. Таким чином, розробка та тестування веб-застосунків в узгодженому середовищі стає набагато простішою. Використання профілів Maven для визначення конфігурацій сервера для різних середовищ допомагає вам керувати різними параметрами для розробки, тестування та виробництва. Ця функція Maven також дозволяє вам налаштовувати логування та моніторинг у плагінах вашого сервера. Таким чином, ви можете відстежувати діяльність сервера та швидко вирішувати проблеми.

SCM (управління системою контролю версій)

Важливим аспектом будь-якого проекту розробки є управління вихідним кодом (SCM). Командам розробки потрібен SCM для управління змінами вихідного коду з часом. Maven має набір команд для взаємодії з системами SCM, такими як Git, Subversion та інші. Ці команди можуть автоматизувати різні завдання, такі як заїзд коду, отримання коду та оновлення версій проекту. Ось деякі ключові команди Maven SCM та їхні параметри:

mvn scm:checkin

Ви можете використати цю команду mvn для заїзду змін проекту в SCM. Ця команда допомагає автоматизувати процес фіксації змін в репозиторії системи контролю версій. Таким чином, найновіші оновлення точно зберігаються та діляться з командою.

mvn scm:checkout

Ця команда Maven використовується для отримання коду проекту з репозиторію SCM, і вона корисна для отримання локальної копії проекту. Таким чином, ви завжди впевнені, що працюєте з найновішою версією вихідного коду.

mvn scm:update

Ця команда mvn оновлює локальну копію проекту з останніми змінами з репозиторію SCM. Її завдання — переконатися, що ваша локальна кодова база синхронізована з репозиторієм та містить усі нові зміни, внесені іншими членами команди.

mvn scm:status

Ця команда mvn показує стан локальної копії відносно репозиторію SCM. Іншими словами, вона повідомляє про всі зміни, які були зроблені локально, але ще не закомічені в репозиторій.

mvn scm:tag

Ця команда використовується для створення тегу в репозиторію SCM. Теги позначають конкретні точки в історії проекту, наприклад випуски або важливі етапи розробки.

Команди Maven SCM можуть значно спростити процес управління вихідним кодом вашого проекту. Розуміння та використання цих команд підвищить вашу продуктивність і співпрацю в команді розробників.

GPG (GNU Privacy Guard)

GNU Privacy Guard (GPG) — це криптографічний інструмент, який дозволяє користувачам шифрувати та підписувати дані та комунікацію. У контексті Maven GPG використовується для підпису артефактів з метою підтвердження їх автентичності та цілісності. Це важливо при розгортанні артефактів у публічні репозиторії, оскільки дозволяє користувачам перевірити, що артефакти не були змінені. Maven забезпечує кілька команд для роботи з GPG та спрощує процес підпису та розгортання артефактів вашого проекту. Дивіться деякі з цих команд як приклади:

mvn gpg:sign

Ви можете використовувати цю команду maven для підпису артефактів проекту за допомогою GPG. Підпис артефактів гарантує, що вони можуть бути перевірені іншими користувачами та забезпечує додатковий рівень безпеки та надійності. Ця команда часто використовується під час процесу збірки для підпису JARs, WARs та інших типів артефактів перед розгортанням.

mvn gpg:sign-and-deploy-file

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

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

Управління випусками

Управління випусками — дуже важливе в розробці програмного забезпечення. Ефективне управління випусками гарантує, що версії програмного забезпечення правильно керуються, пакуються та розгортаються. Maven надає набір команд для автоматизації та спрощення процесу випуску. Дивіться деякі приклади параметрів maven та команд для управління випусками:

mvn release:prepare

Ця команда mvn використовується для підготовки проекту до випуску. Вона виконує завдання, такі як перевірка того, що немає незакомічених змін, оновлення номерів версій у pom.xml файлах, маркування випуску в системі управління вихідним кодом (SCM) та оновлення pom.xml файлів на наступну версію розробки. Вона гарантує, що проект знаходиться в стабільному стані та готовий до випуску.

mvn release:perform

Ця команда виконує фактичний процес випуску. Вона витягує проект з SCM за тегом, створеним командою release:prepare збирає проект та розгортає артефакти до зазначеного репозиторію. Ця команда гарантує, що артефакти збудовані з точного стану коду на момент підготовки випуску.

mvn release:clean

Ця команда mvn видаляє всі файли резервної копії дескриптора випуску, які були створені під час процесу release:prepare Вона очищує середовище та гарантує, що не залишилося файлів від попередніх спроб випуску. Ця команда надає вам чистий робочий простір та запобігає потенційним проблемам у наступних випусках.

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

Архетип

Якщо ви розробник, який хоче створювати структури проектів на основі заздалегідь визначених шаблонів, вам варто розглянути використання плагіна Maven Archetype. Тут ми обговоримо основні команди Maven, пов'язані з архетипами.

mvn archetype:generate

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

mvn archetype:catalog

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

Використовуючи ці дві команди maven, ви можете швидко запустити новий проект. Незалежно від того, чи ви починаєте просту програму або складний корпоративний проект, архетипи Maven забезпечують цінну стартову точку.

Управління плагінами

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

mvn plugin:download

Ця команда використовується для завантаження конкретного плагіна Maven з репозиторію. Ви можете використовувати її, коли хочете переконатися, що конкретний плагін доступний у вашому локальному репозиторію перед запуском інших команд Maven, які від нього залежать.

mvn plugin:help

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

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

Збирання й розповсюдження

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

mvn assembly:assembly

Ця команда створює збірку для проекту. Збірка — це розповсюджуваний пакет, який може включати бінарні файли, вихідний код, залежності та інші ресурси. Ця команда використовує Assembly Plugin для генерації цих пакетів на основі наданого дескриптора збірки.

mvn assembly:directory

Ця команда mvn створює структуру каталогів збірки без фактичного створення файлу архіву. Ця команда корисна для тестування та перевірки вмісту та структури збірки перед упакуванням.

Навчання використанню команд Maven для збирання та розповсюджування допоможе вам багато в упаковці та розповсюджуванні ваших програм.

Команди генерування сайту

Команди site Maven — це чудовий спосіб документування проектів. Ці команди створюють комплексні вебсайти документації для ваших проектів. Тут ми розглянемо основні команди site та їх функції:

mvn site

Команда mvn site генерує документацію сайту вашого проекту й включає інформацію про проект, таку як резюме проекту, звіти про залежності, використання плагінів тощо.

mvn site:deploy

Ви можете використовувати цю команду для розгортання згенерованого сайту на віддалений сервер. Це корисно для надання доступу до документації більшій аудиторії, наприклад членам команди або громадськості.

mvn site:stage

Ця команда підготовлює сайт до локального каталогу. Ви можете використовувати цю команду для попереднього перегляду сайту локально перед розгортанням на віддалений сервер.

Акуратна та організована документація надзвичайно важлива під час розробки проекту. Команда maven site дозволяє вам мати все на місці й забезпечувати краще спілкування в команді розробників.

Команди WAR і JAR

Як розробник, ви точно знаєте, що можливість упакувати свої програми в різні формати надзвичайно важлива в процесі розробки. Maven дозволяє упакувати програми в різні формати, включаючи WAR (Web Application Archive) та JAR (Java Archive) файли. Важливість цих форматів упакування стає зрозумілою, коли ви хочете розгортати програми на серверах і розповсюджувати бібліотеки. Тут ми розглянемо ключові команди mvn для генерації WAR та JAR файлів:

mvn war:war

Ця команда компілює ваш проект та упаковує його в WAR файл. Коли ви запускаєте цю команду, Maven генерує WAR файл у каталозі target вашого проекту.

mvn jar:jar

Ця команда компілює ваш проект та упаковує його в JAR файл у каталозі target вашого проекту.

Ці дві команди допомагають вам при розгортанні та розповсюджуванні програм. Таким чином, ви можете використовувати їх для ефективного управління та розповсюджування програм.

Звітність

Будь-який програмний проект потребує детальних звітів для відстеження прогресу. А Maven має потужні плагіни та команди mvn для генерації різних типів звітів. Цей розділ охоплює два плагіни Maven, які ви можете використовувати для звітування: Surefire та JaCoCo.

Надійний плагін

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

mvn surefire-report:report

Ця команда генерує звіт модульного тестування у форматі, який легко читати та аналізувати. За допомогою цієї команди Maven створює звіт у каталозі target/site вашого проекту. Цей звіт включає інформацію про кількість запущених, пройдених та невдалих тестів, а також детальні трасування стека для будь-яких помилок.

Плагін JaCoCo

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

mvn jacoco:report

Якщо ви хочете побачити, які частини коду були протестовані, а які ні, ця команда надає вам звіт про покриття коду. Звіт, який створює ця команда, розташовується у каталозі target/site/jacoco і показує детальні метрики покриття для класів, методів та рядків коду.

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

Побудова налаштування

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

Профілі Maven

За допомогою профілів Maven ви можете визначити різні конфігурації для вашого проекту, які можна активувати на основі різних факторів, таких як системні властивості, змінні оточення або користувацькі умови. Це означає, що ви можете налаштувати процес збірки для різних середовищ, таких як розробка, тестування та виробництво. Ви можете визначити профілі у своєму pom.xml файлі у розділі <profiles> розділі. І -p опція з ідентифікатором профілю активує профіль для вас.

Визначення властивостей

Властивості Maven дозволяють визначити значення, які можна повторно використовувати у всьому pom.xml файлі. Ці властивості можна вказати в pom.xml, через командний рядок або у зовнішніх файлах властивостей. Властивості можна визначити в <properties> розділ вашого pom.xml. Після визначення їх можна використовувати ці властивості у всьому pom.xml файл.

Налаштування процесу складання в Maven дозволяє адаптувати проект до різних середовищ та вимог. За допомогою профілів ви можете переходити між різними конфігураціями складання, а за допомогою властивостей — повторно використовувати та ефективно керувати значеннями.

Висновок

Цей матеріал дав детальний вступ до Maven, провівши вас через кожен етап розроблення додатку Java. Як потужний інструмент автоматизації для проектів Java, Maven має різні команди та можливості для кожної фази розроблення. Розуміння цих команд та вміння ними користуватися значно підвищує якість вашого процесу розроблення.

Часто задавані питання

Для чого використовується Maven?

Maven — інструмент автоматизації складання та управління проектами для Java. Він спрощує процес складання, управляє залежностями проекту й забезпечує стандартизовану структуру проекту. Maven також підтримує документацію, звітування та розповсюдження проектів.

Що таке POM у Maven?

Maven — інструмент, який автоматизує процес складання та управління залежностями для проектів Java. POM (Project Object Model) — це XML-файл у Maven, який містить інформацію про проект та деталі конфігурації, що використовуються Maven для складання проекту. Файл POM визначає залежності проекту, плагіни, цілі та інші конфігурації складання.

Поділитися

Ще з блогу

Читайте далі.

Зображення для огляду Odoo: великий заголовок ліворуч і логотип Odoo праворуч, на тлі м'якого фіолетового хмарного фону з панелями інтерфейсу застосунку.
Веб- і бізнес-додатки

Повний огляд Odoo: чи підходить Odoo як ERP для вашого бізнесу

Odoo - одна з найбільш розглянутих ERP-платформ для бізнесу, що зростає, і причина проста: вона обіцяє закрити багато потреб в одному місці. Продажі, бухгалтерія, складський облік

Джим ШварцДжим Шварц 11 хв читання
Зображення для статті про відкриті альтернативи WordPress: барвистий градієнтний фон, монітор, редактор коду, розмитий попередній перегляд дашборду та великий заголовок ліворуч.
Веб- і бізнес-додатки

Найкращі відкриті альтернативи WordPress для розробників

WordPress залишається актуальним і добре справляється з широким спектром сайтів. У каталозі плагінів налічується понад 62 000 плагінів, а в каталозі тем - понад 14 000 безплатних тем. Tha

Джим ШварцДжим Шварц 14 хв читання
Зображення для порівняння Automad і WordPress: логотипи обох платформ і заголовок із запитанням, яку CMS обрати розробникам.
Веб- і бізнес-додатки

Automad проти WordPress: детальне порівняння двох провідних CMS-платформ

Automad та WordPress вирішують одне й те саме завдання двома принципово різними способами. Automad — це CMS на основі файлів і рушій шаблонів: контент зберігається у файлах, а не в базі даних. Натомість WordPress,

Джим ШварцДжим Шварц 9 хв читання

Готові до розгортання? З $2.48/міс.

Незалежна хмара з 2008 року. AMD EPYC, NVMe, 40 Gbps. Повернення коштів протягом 14 днів.