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

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

Ада Лавгуд By Ада Лавгуд 18 хв читання Оновлено 23 лютого 2025 р
посібник з команд mvn

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

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

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

Тепер, щоб мати чітке уявлення про те, як працює Maven, давайте розберемо концепцію a Об'єктна модель проекту (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 файл під <залежності> розділ. Кожна залежність визначається набором координат: groupId, artifactId, і версія.

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

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

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

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

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

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

mvn dependency:resolve

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

mvn dependency:tree

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

mvn dependency:analyze

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

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

виконання

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

mvn exec:java

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

mvn exec:exec

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

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

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

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

mvn tomcat7:run

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

mvn jetty:run

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

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

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

SCM (керування джерелом контролю)

Важливим аспектом будь-якого проекту розробки є Source Control Management (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. Підписання артефактів гарантує, що їх можуть перевірити інші, і забезпечує рівень безпеки та довіри. Ця команда часто використовується під час процесу збирання для підписання файлів JAR, WAR та інших типів артефактів перед розгортанням.

mvn gpg:sign-and-deploy-file

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

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

Управління релізами

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

mvn release:prepare

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

mvn release:perform

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

mvn release:clean

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

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

Архетип

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

mvn archetype:generate

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

mvn archetype:catalog

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

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

Керування плагінами

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

mvn plugin:download

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

mvn plugin:help

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

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

Збірка та розповсюдження

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

mvn assembly:assembly

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

mvn assembly:directory

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

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

Команди генерації сайту

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

mvn site

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

mvn site:deploy

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

mvn site:stage

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

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

Команди WAR & JAR

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

mvn war:war

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

mvn jar:jar

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

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

Звітність

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

Плагін Surefire

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

mvn surefire-report:report

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

Плагін JaCoCo

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

mvn jacoco:report

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

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

Налаштування збірки

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

Профілі Maven

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

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

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

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

Висновок

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

FAQ

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

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

Що таке POM у Maven?

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

Поділіться

Більше з блогу

Продовжуйте читати.

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

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

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 Гбіт/с. 14-денне повернення грошей.