img

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

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

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

Введение

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

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

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Программирование
Скидка 25%
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API. Создайте свой собственный проект, собрав портфолио и став востребованным специалистом для любой IT компании
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Гипервизор - это программное обеспечение для виртуализации, используемое для создания и запуска виртуальных машин (ВМ). Гипервиз
img
Виртуализация серверов позволяет запускать несколько виртуальных машин на одном физическом сервере. Запуск виртуальных машин (ВМ
img
Сегодня мы рассмотрим, как настроить и использовать PHP в проекте. Но прежде чем начать, нужно понять, что такое PHP. Что такое
img
Как разработчик, вы знаете, что HTML расшифровывается как HyperText Markup Language (язык разметки гипертекста). HTML — это язык
img
Бесконечные споры вокруг искусственного интеллекта приводят к путанице. Существует много терминов, которые кажутся похожими, но
img
SVG расшифровывается как масштабируемая векторная графика. Это веб-дружелюбный векторный формат файлов, используемый для отображ
21 ноября
20:00
Бесплатный вебинар
Введение в Docker