ウェブサイト検索

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プロジェクトをクリーンアップします。

  1. mvn clean

出力の例:

[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

このコマンドはMavenプロジェクトのJavaソースクラスをコンパイルします:

  1. mvn compiler:compile

出力の例:

[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 コンパイラ:testCompile

このコマンドはMavenプロジェクトのテストクラスをコンパイルします。

  1. mvn compiler:testCompile

出力の例:

[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プロジェクトをビルドし、それをJAR、WARなどの形式にパッケージ化します。

  1. mvn package

出力の例:

[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 ゴールがビルドをパッケージ化する前に compile、testCompile、および test ゴールを実行することに注意してください。

mvn install

このコマンドはMavenプロジェクトをビルドし、プロジェクトファイル(JAR、WAR、pom.xmlなど)をローカルリポジトリにインストールします:

  1. mvn install

出力の例:

[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

このコマンドはアーティファクトをリモートリポジトリにデプロイします:

  1. mvn deploy

リモートリポジトリは、プロジェクトのpom.xmlファイルのdistributionManagementタグで適切に設定されるべきです。Mavenのsettings.xmlファイルのサーバーエントリは、認証情報を提供するために使用されます。

mvn validate

このコマンドはMavenプロジェクトを検証し、すべてが正しいことと必要な情報がすべて揃っていることを確認します。

  1. mvn validate

mvn dependency:tree の実行

このコマンドはMavenプロジェクトの依存関係ツリーを生成します:

  1. mvn dependency:tree

出力の例:

[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プロジェクトを分析します。

  1. mvn dependency:analyze

出力の例:

[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のコマンド

このコマンドは、JAR、ウェブアプリケーション、Mavenサイトなどのさまざまな種類のスケルトンMavenプロジェクトを生成します:

  1. mvn archetype:generate

出力の例:

[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

推奨読書: Maven Archetypesを使用してJavaプロジェクトを作成する

mvn site:site

このコマンドはプロジェクトのためのサイトを生成します。

  1. mvn site:site

このコマンドを実行した後、target ディレクトリに site ディレクトリが作成されていることに気づくでしょう。

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

siteディレクトリ内に、プロジェクトに関連する情報を提供する複数のHTMLファイルがあります。

mvn テスト

このコマンドはプロジェクトのテストケースを実行します:

  1. mvn test

出力の例:

[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クラスをコンパイルします:

  1. mvn compile

出力の例:

[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コマンドと似ていますが、compileまでのMavenライフサイクル全体を実行します。

mvn verify

このコマンドはプロジェクトをビルドし、すべてのテストケースを実行し、統合テストの結果に対してチェックを行い、品質基準が満たされていることを確認します。

  1. mvn verify

Mavenオプション

MavenはMavenビルドプロセスを変更するための多くのコマンドラインオプションを提供しています:

mvn -help の使い方

このコマンドラインオプションは、Mavenの使用法とすべての利用可能なオプションを表示します:

  1. mvn -help

出力の例:

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 パッケージ

このコマンドラインオプションは、別の場所からプロジェクトをビルドします:

  1. mvn -f dir/pom.xml package

プロジェクトをビルドするためにpom.xmlファイルの場所を指定してください。これは、スクリプトからMavenビルドを実行する必要がある場合に役立ちます。

mvn -o パッケージ

このコマンドラインオプションはMavenビルドをオフラインモードで実行します。

  1. mvn -o package

ローカルリポジトリに必要なすべてのJARをダウンロードしている場合、MavenにリモートリポジトリでJARを探させたくないときに便利です。

mvn -q パッケージ

このコマンドラインオプションは、Mavenビルドをサイレントモードで実行するため、テストケースの結果とエラーのみが表示されます。

  1. mvn -q package

mvn -X パッケージ

このコマンドラインオプションは Maven のバージョンを表示し、デバッグモード でビルドを実行しますので、すべてのメッセージが表示されます:

  1. mvn -X package

出力の例:

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のバージョン情報を表示します:

  1. mvn -v

出力の例:

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 パッケージ

このコマンドラインオプションはMavenのバージョンを表示し、その後ビルドを続行します:

  1. mvn -V package

これはコマンドに相当します:

  1. mvn -v;mvn package

mvn -DskipTests package

このコマンドラインオプションは、ビルドサイクルから単体テストケースをスキップするために skipTests システムプロパティを適用します:

  1. mvn -DskipTests package

テストケースの実行をスキップすることもできます:

  1. mvn -Dmaven.test.skip=true package

mvn -T 4 clean install

このコマンドラインオプションは、指定されたスレッド数を使用してMavenに並列ビルドを実行するよう指示します。

  1. mvn -T 4 clean install

複数のモジュールプロジェクトにおいて、モジュールを並行して構築できることが役立ちます。プロジェクトのビルド時間を短縮することができます。

参考文献

  • Mavenプラグイン
  • Maven CLI オプションリファレンス

関連記事: