20+ Mavenのコマンドとオプション(チートシート)
こんにちは、はじめまして。
MavenはJavaアプリケーションのプロジェクト管理や依存関係管理のために最も人気のあるツールの一つです。Mavenには日々の作業を助けるための多くのコマンドやオプションが提供されています。
このチートシートは、いくつかの便利なMavenコマンドを示すためにサンプルのMavenプロジェクトを使用しています。元々はOpenJDK 13.0.1とMaven 3.6.3向けに書かれていました。これらのコマンドはOpenJDK 19.0.1とMaven 3.8.7でも確認済みです。
Mavenコマンドのチートシート
「mvn clean」を日本語で書き換えてください。
このコマンドは、targetディレクトリを削除してMavenプロジェクトをクリーンにします。
- 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コンパイル:コンパイル
このコマンドは、Maven プロジェクトの Java ソースクラスをコンパイルします。
- mvn compiler:compile
以下の文を日本語で言い換える(1つのオプションのみ必要):
出力の例:
[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プロジェクトのテストクラスをコンパイルします。
- 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」を日本語で表現すると、「mvnパッケージ」です。
このコマンドはMavenプロジェクトをビルドし、JAR、WARなどにパッケージ化します。
- 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ファイルの場所が表示されます。ビルドをパッケージ化する前に、パッケージゴールはcompile、testCompile、およびtestゴールを実行することに注意してください。
インストールするためにmvnを使用します。
このコマンドはMavenプロジェクトをビルドし、プロジェクトのファイル(JAR、WAR、pom.xmlなど)をローカルリポジトリにインストールします。
- mvn install
以下の日本語での言い換え例を1つ提供します。
出力の例:
[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」を実行する
このコマンドはアーティファクトをリモートリポジトリに展開します。
- mvn deploy
プロジェクトのpom.xmlファイルのdistributionManagementタグにリモートリポジトリを適切に設定する必要があります。Mavenのsettings.xmlファイルのサーバーエントリは、認証情報を提供するために使用されます。
mvnのvalidate
このコマンドは、すべてが正確で必要な情報がそろっていることを確認するために、Mavenプロジェクトを検証します。
- mvn validate
mvn dependency:treeの内容を日本語で言い換えると、「mvn dependency:tree」の依存関係のツリーを表示するコマンドです。
このコマンドは、Mavenプロジェクトの依存関係のツリーを生成します。
- 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 を日本語で書き換える。
mvn dependency:analyze
このコマンドは、Mavenプロジェクトを解析して、使用されていない宣言済みの依存関係と使われている未宣言の依存関係を特定します。
- 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プロジェクトを生成します。
- 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サイト:サイト
このコマンドはプロジェクトのためのサイトを生成します。
- mvn site:site
このコマンドを実行した後、ターゲットのディレクトリ内にサイトディレクトリが表示されます。
/Users/sammy/Desktop/maven-examples/maven-example-jar/target/site/index.html
プロジェクトに関連する情報を提供するため、サイトディレクトリ内には複数のHTMLファイルが存在します。
テストを実行するために mvn test を使用してください。
このコマンドはプロジェクトのテストケースを実行します。
- 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のコンパイルを実行する
このコマンドは、プロジェクトのソースJavaクラスをコンパイルします。
- 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コマンドに類似していますが、コンパイルまでのMavenの全ライフサイクルが実行されます。
以下のフレーズを日本語で自然な表現に変換します(オプションは1つだけ):
mvn verify -> ビルドの検証を行う(「mvn verify」はメイブン(Maven)のコマンドで、ビルドの検証を行うという意味です)
このコマンドは、プロジェクトをビルドし、すべてのテストケースを実行し、統合テストの結果に対してチェックを行って、品質基準が満たされていることを確認します。
- mvn verify
メイブンのオプション
Mavenは、Mavenビルドプロセスを変更するために多くのコマンドラインオプションを提供しています。
mvnコマンドのヘルプオプションを教えてください。
このコマンドラインオプションは、Mavenの使用方法と利用可能なオプションを表示します。
- 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
dirディレクトリ内のpom.xmlを使用して、mvn packageを実行してください。
このコマンドラインオプションは、別の場所からプロジェクトをビルドします。
- mvn -f dir/pom.xml package
プロジェクトのビルドにはpom.xmlファイルの場所が必要です。スクリプトからMavenのビルドを実行する際に役立ちます。
mvn(メイブン)-o(オフライン)パッケージ
このコマンドラインオプションはMavenビルドをオフラインモードで実行します。
- mvn -o package
ローカルリポジトリに必要なJARファイルがすべてダウンロードされており、リモートリポジトリでのJARファイルの参照を避けたい場合に便利です。
mvn -q package を日本語で言い換えると、次のようになります。
mvn -q パッケージ
このコマンドラインオプションを使用すると、Mavenのビルドが静かなモードで実行され、テストケースの結果とエラーのみが表示されます。
- mvn -q package
mvn -X パッケージ化
このコマンドラインオプションは、Mavenのバージョンを表示し、ビルドをデバッグモードで実行します。そのため、すべてのメッセージが表示されます。
- 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のバージョン情報を表示します。
- 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 package
“`
「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コマンドを使用して、並列処理で4つのスレッドを使ってクリーンビルドを実行してください。
このコマンドラインオプションは、指定したスレッド数を使用してMavenに並列ビルドを実行するよう指示します。
- mvn -T 4 clean install
複数のモジュールが並行して構築できるマルチモジュールプロジェクトでは、これは非常に便利です。プロジェクトのビルド時間を短縮することができます。
参考文献
- Maven Plugins
- Maven CLI Options Reference