img

20+ команд и параметров Maven

20+ команд и параметров Maven (памятка)

icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту

Введение

Maven – это один из самый популярных инструментов управления проектами и зависимостями для Java-приложений. У Maven есть огромное количество команд и параметров, которые могут помочь вам упростить ваши повседневные задачи.

Для того, чтобы продемонстрировать некоторые полезные команды Maven, в этой памятке используется пример Maven-проекта. Изначально он был написан для OpenJDK 13.0.1 и Maven 3.6.3. Но проверка команд была выполнена с помощью OpenJDK 19.0.1 и Maven 3.8.7.

Памятка по командам Maven

Памятка по командам Maven

mvn clean

Эта команда очищает проект Maven, удаляя целевой каталог:

mvn clean

Пример вывода:

Output
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-example-jar ---
[INFO] Deleting /Users/sammy/Desktop/maven-examples/maven-example-jar/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

mvn compiler:compile

Эта команда компилирует исходные классы Java Maven-проекта:

mvn compiler:compile

Пример вывода:

Output
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-cli) @ maven-example-jar ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/sammy/Desktop/maven-examples/maven-example-jar/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

mvn compiler:testCompile

Эта команда компилирует тестовые классы Maven-проекта:

mvn compiler:testCompile

Пример вывода:

Output
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-cli) @ maven-example-jar ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/sammy/Desktop/maven-examples/maven-example-jar/target/test-classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

mvn package

Эта команда собирает Maven-проект и упаковывает его в JARWAR-файлы и т.д.:

mvn package

Пример вывода:

Output
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-example-jar ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/sammy/Desktop/maven-examples/maven-example-jar/target/classes
...
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-example-jar ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/sammy/Desktop/maven-examples/maven-example-jar/target/test-classes
...
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-example-jar ---
[INFO] Surefire report directory: /Users/sammy/Desktop/maven-examples/maven-example-jar/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.maven.classes.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-example-jar ---
[INFO] Building jar: /Users/sammy/Desktop/maven-examples/maven-example-jar/target/maven-example-jar-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

Прямо перед сообщением "BUILD SUCCESS" вывод показывает, где расположен JAR-файл. Обратите внимание, что задача команды package заключается в том, что она должна выполнить задачи compiletestCompile и test перед тем, как упаковать сборку. 

mvn install

Эта команда собирает Maven-проект и устанавливает файлы проекта (JARWARpom.xml и т.д.) в локальный репозиторий:

mvn install

Пример вывода:

Output
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-example-jar ---
...
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-example-jar ---
...
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-example-jar ---
...
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-example-jar ---
...
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-example-jar ---
...
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-example-jar ---
...
[INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-example-jar ---
[INFO] Installing /Users/sammy/Desktop/maven-examples/maven-example-jar/target/maven-example-jar-0.0.1-SNAPSHOT.jar to /Users/sammy/.m2/repository/com/example/maven/maven-example-jar/0.0.1-SNAPSHOT/maven-example-jar-0.0.1-SNAPSHOT.jar
[INFO] Installing /Users/sammy/Desktop/maven-examples/maven-example-jar/pom.xml to /Users/sammy/.m2/repository/com/example/maven/maven-example-jar/0.0.1-SNAPSHOT/maven-example-jar-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

mvn deploy

Эта команда развертывает артефакт в удаленном репозитории:

mvn deploy

Удаленный репозиторий необходимо правильно настроить в теге distributionManagement файла проекта pom.xml. Записи сервера, расположенные в файле settings.xml, используются для предоставления сведений для проверки личности пользователя. 

mvn validate

Эта команда проверяет Maven-проект с целью убедиться, что все настроено правильно, и вся необходимая информация находится в доступе:

mvn validate

mvn dependency:tree

Эта команда генерирует дерево зависимостей Maven-проекта:

mvn dependency:tree

Пример вывода:

Output
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ Mockito-Examples ---
[INFO] com.example.mockito:Mockito-Examples:jar:1.0-SNAPSHOT
[INFO] +- org.junit.platform:junit-platform-runner:jar:1.2.0:test
[INFO] |  +- org.apiguardian:apiguardian-api:jar:1.0.0:test
[INFO] |  +- org.junit.platform:junit-platform-launcher:jar:1.2.0:test
[INFO] |  \- org.junit.platform:junit-platform-suite-api:jar:1.2.0:test
[INFO] |     \- org.junit.platform:junit-platform-commons:jar:1.2.0:test
[INFO] +- org.junit.jupiter:junit-jupiter-engine:jar:5.2.0:test
[INFO] |  +- org.junit.platform:junit-platform-engine:jar:1.2.0:test
[INFO] |  |  \- org.opentest4j:opentest4j:jar:1.1.0:test
[INFO] |  \- org.junit.jupiter:junit-jupiter-api:jar:5.2.0:test
[INFO] +- org.mockito:mockito-junit-jupiter:jar:2.19.0:test
[INFO] |  \- org.mockito:mockito-core:jar:2.19.0:test
[INFO] |     +- net.bytebuddy:byte-buddy:jar:1.8.10:test
[INFO] |     +- net.bytebuddy:byte-buddy-agent:jar:1.8.10:test
[INFO] |     \- org.objenesis:objenesis:jar:2.6:test
[INFO] \- org.testng:testng:jar:6.14.3:test
[INFO]    +- com.beust:jcommander:jar:1.72:test
[INFO]    \- org.apache-extras.beanshell:bsh:jar:2.0b6:test

mvn dependency:analyze

Эта команда анализирует Maven-проект с целью выявить зависимости, которые были объявлены, но не используются, и которые используются, но не были объявлены:

mvn dependency:analyze

Пример вывода:

Output
[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ Mockito-Examples ---
[WARNING] Used undeclared dependencies found:
[WARNING]    org.junit.jupiter:junit-jupiter-api:jar:5.2.0:test
[WARNING]    org.mockito:mockito-core:jar:2.19.0:test
[WARNING] Unused declared dependencies found:
[WARNING]    org.junit.platform:junit-platform-runner:jar:1.2.0:test
[WARNING]    org.junit.jupiter:junit-jupiter-engine:jar:5.2.0:test
[WARNING]    org.mockito:mockito-junit-jupiter:jar:2.19.0:test

Эта команда может оказаться полезной с точки зрения уменьшения размера сборки за счет выявления неиспользуемых зависимостей и их удаления из файла pom.xml.

mvn archetype:generate

Эта команда генерирует скелеты различных Maven-проектов, например, JAR –проектов, веб-приложений, сайтов Maven и т.д. 

mvn archetype:generate

Пример вывода:

Output
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
...
[INFO] Project created from Archetype in dir: /Users/sammy/Desktop/maven-examples/maven-example-jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

mvn site:site

Эта команда генерирует сайт для проекта:

mvn site:site

После того, как вы выполните команду, вы увидите, что в целевом каталоге (target) появился каталог site.

/Users/sammy/Desktop/maven-examples/maven-example-jar/target/site/index.html

В этом каталоге будет несколько HTML-файлов, в которых будет содержатся информация, относящаяся к сайту. 

mvn test

Эта команда запускает тестовые сценарии проекта:

mvn test

Пример вывода:

Output
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running TestSuite
first-element
second-element
Employee setName Argument = Sammy
...
[INFO] Results:
[INFO]
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

mvn compile

Эта команда компилирует исходные классы Java Maven-проекта:

mvn compile

Пример выполнения:

Output
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ Mockito-Examples ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 10 source files to /Users/sammy/Desktop/maven-examples/Mockito-Examples/target/classes

Эта команда похожа на предыдущую команду mvn compiler:compile за одним исключением – она выполняет весь жизненный цикл Maven-проекта вплоть до компиляции.

mvn verify

Эта команда выполняет сборку проекта, запускает все тестовые сценарии и выполняет любые проверки результатов интеграционных тестов, дабы гарантировать, что проект соответствует критериям качества:

mvn verify

Параметры Maven

У Maven есть огромное количество параметров командной строки, которые позволяют управлять процессом сборки Maven-проекта:

mvn –help

Этот параметр командной строки выводит информацию об использовании Maven и все доступные параметры:

mvn –help

Пример вывода:

Output
usage: mvn [options] [<goal(s)>] [<phase(s)>]

Options:
  -am,--also-make                  If project list is specified, also
                                   build projects required by the
                                   list
  -amd,--also-make-dependents      If project list is specified, also
                                   build projects that depend on
                                   projects on the list
  -B,--batch-mode                  Run in non-interactive (batch)
                                   mode (disables output color)
  -b,--builder <arg>               The id of the build strategy to
                                   use
  -C,--strict-checksums            Fail the build if checksums don't
                                   match
  -c,--lax-checksums               Warn if checksums don't match
  -cpu,--check-plugin-updates      Ineffective, only kept for
                                   backward compatibility

mvn –f dir/pom.xml package

Этот параметр командной строки выполняет сборку проекта, который находится где-то в другом месте:

mvn -f dir/pom.xml package

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

mvn –o package

Этот параметр командной строки запускает сборку Maven-проекта в офлайн-режиме:

mvn -o package

Это может оказаться полезным в том случае, если все необходимые JAR-файлы уже загружены в локальный репозиторий, и вы не хотите, чтобы Maven искал какие-то дополнительные JAR-файлы в удаленном репозитории. 

mvn –q package

Этот параметр командной строки запускает сборку Maven-проекта в тихом режиме, при котором на экране отображаются только ошибки и результаты выполнения тестового сценария:

mvn -q package

mvn –X package

Этот параметр командной строки выводит версию Maven и запускает сборку в режиме отладки для того, чтобы на экране отображались все сообщения:

mvn -X package

Пример вывода:

Output
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/sammy/Downloads/apache-maven-3.6.3
Java version: 13.0.1, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
Default locale: en_IN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.1", arch: "x86_64", family: "mac"
[DEBUG] Created new class realm maven.api
[DEBUG] Importing foreign pacakges into class realm maven.api
[DEBUG]   Imported: javax.annotation.* < plexus.core
[DEBUG]   Imported: javax.annotation.security.* < plexus.core
[DEBUG]   Imported: javax.enterprise.inject.* < plexus.core
[DEBUG]   Imported: javax.enterprise.util.* < plexus.core
[DEBUG]   Imported: javax.inject.* < plexus.core

mvn –v

Этот параметр командной строки отображает информацию о версии Maven:

mvn -v

Пример вывода:

Output
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/sammy/Downloads/apache-maven-3.6.3
Java version: 13.0.1, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
Default locale: en_IN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.1", arch: "x86_64", family: "mac"

mvn –V package

Этот параметр командной строки выводи версию Maven, после чего продолжает выполнение сборки:

mvn -V package

Эта команда эквивалентна следующим:

mvn -v;mvn package

mvn –DskipTests package

Этот параметр командной строки применяет системное свойство skipTests, которое позволяет пропускать сценарии модульного тестирования в процессе сборки:

mvn -DskipTests package

Вы также можете пропускать выполнение тестовых сценариев:

mvn -Dmaven.test.skip=true package

mvn –T 4 clean install

Этот параметр командной строки сообщает Maven о том, что необходимо запустить параллельные сборки с указанным количеством потоков:

mvn -T 4 clean install

Это довольно полезно в проектах с несколькими модулями, которые можно собирать параллельно. Такой подход может сократить время сборки проекта. 

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Подробнее о курсе
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Подробнее о курсе
Фронтенд-разработчик с нуля
Погрузитесь в мир веб-разработки, освоив основные инструменты работы: HTML, CSS, JavaScript
Подробнее о курсе
Разработка приложений на Flutter и Dart
Научись создавать кроссплатформенные приложения на Flutter, освой язык Dart
Подробнее о курсе
Автоматизированное тестирование на Python
Изучите автоматизацию тестирования на Python чтобы стать востребованным специалистом
Подробнее о курсе
Еще по теме:
img
SQL или NoSQL, вот в чём вопрос! И как раз с этим вопросом мы поможем сегодня разобраться. Что использовать в каких случаях, где есть какие преимущества и как возможно использовать их все вместе.
img
Вебхуки позволяют различным системам обмениваться данными в реальном времени. В этой статье мы разберём, что такое вебхук, как он работает, где и зачем его использовать, а также как настроить.
img
Redis — один из самых популярных инструментов для хранения данных. В статье разбираем, что такое Redis и как его можно использовать.
img
Маска подсети помогает определить, какие устройства находятся в одной сети, а какие – за её пределами. В этой статье разберём, что такое маска подсети, зачем она нужна и как её использовать.
img
Деплой (развертывание) приложения — это этап разработки, на котором приложение размещается и запускается на сервере. Это позволяет начать его использование. В статье разберемся, как это происходит.
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59