maven

Maven 3.9+

Maven CLI コマンドのクイック リファレンス:プロジェクト ライフサイクル フェーズ、依存関係管理、プラグイン、マルチモジュール リアクター、リポジトリ デプロイ、デバッグ — よく使うオプションと実用例をまとめました。

34 コマンド

ライフサイクル フェーズ

mvn validate

プロジェクト構造を検証します:メタデータのダウンロード、`pom.xml` の解析、依存関係の健全性チェック。

-N ルート リアクターのみ(サブモジュールなし); -f <pom> 別の POM を使用; -P<profile> プロファイルを有効化

mvn validate
mvn compile

プロジェクトのメイン `src/main/java` を `target/classes` にコンパイルします。構成された JDK と `maven-compiler-plugin` を使用します。

-DskipTests; -T 4 並列ビルド スレッド; -q 静かに

mvn compile
mvn test

コンパイル済みのメイン + テスト ソースに対してユニット テスト(Surefire)を実行します。`failsafe`(統合テスト)をスキップします — それには `mvn verify` を使用してください。

-Dtest=ClassName; -Dtest=Class#method; -DfailIfNoTests=false; -Dsurefire.useFile=false

mvn test -Dtest=UserServiceTest
mvn package

前のすべてのフェーズを実行し、コンパイル済み出力を `target/` 配下の JAR / WAR / EAR にパッケージ化します。

-DskipTests; -Dpackaging=jar

mvn package -DskipTests
mvn verify

パッケージと統合テスト(Failsafe)を実行し、すべてが出荷可能であることを検証します。**インストールもデプロイもしません**。

-DskipITs; -DskipTests

mvn verify -DskipITs
mvn install

verify を実行し、生成されたアーティファクトをローカル Maven リポジトリ(`~/.m2/repository`)にコピーして、他のローカル プロジェクトがそれに依存できるようにします。

mvn install -DskipTests
mvn deploy

`pom.xml` の `<distributionManagement>` で宣言されたリモート リポジトリ(Nexus / Artifactory / Sonatype 経由の Maven Central)にアーティファクトをビルドしてプッシュします。

-DskipTests; -P release リリース プロファイルを使用

mvn deploy -P release -DskipTests
mvn clean

`target/` ディレクトリを削除して新しい状態から始めます。

mvn clean
mvn clean install

`target/` を消去してから `install` を実行します。最も一般的な「ゼロから再ビルド」コマンドです。

-U スナップショット依存関係の強制更新

mvn clean install -U

依存関係

mvn dependency:tree

解決された依存関係ツリー(競合解決付き)を出力します — バージョンの不一致による `NoSuchMethodError` の追跡に非常に貴重です。

-Dincludes=<groupId>[:<artifactId>[:<version>]]; -Dverbose

mvn dependency:tree -Dincludes=com.fasterxml.jackson.core
mvn dependency:resolve

ライフサイクルを実行せずにすべての依存関係をローカル リポジトリに解決します。

mvn dependency:resolve
mvn dependency:analyze

宣言された `<dependencies>` と実際の `import` / `package` 使用法を比較します。未使用 / 未宣言の依存関係をフラグします。

mvn dependency:analyze
mvn dependency:list

ビルド内で解決されたすべての依存関係をプレーンな `groupId:artifactId:type:version` 行として一覧表示します。

mvn dependency:list | grep slf4j
mvn versions:display-dependency-updates

構成されたリポジトリで新しいバージョンが利用可能なすべての依存関係を一覧表示します。

mvn versions:display-dependency-updates

マルチモジュール

mvn -pl <module> <goal>

アーティファクト ID で 1 つ以上の特定のサブモジュールに対してゴールを実行します(カンマ区切り)。

-am ターゲットが依存するモジュールもビルド

mvn -pl user-service,order-service -am test
mvn -pl <module> -am <goal>

指定されたモジュールとそれが依存するすべてのモジュールをビルドします。`-amd`(also-make-dependents)は逆です。

mvn -pl web -am package
mvn -T 4 <phase> / mvn -T 1C <phase>

並列リアクター:`-T 4` は 4 スレッドを使用; `-T 1C` は CPU コアあたり 1 スレッドを使用。マルチモジュール ビルドを高速化します。

mvn -T 1C clean install

リポジトリ

mvn help:effective-pom

最終的なマージ済み POM(スーパー POM + 親 POM + アクティブなプロファイル + 現在の設定)を 1 つのファイルに出力します — ビルド時の信頼できる情報源です。

-Doutput=<file>

mvn help:effective-pom > effective.xml
mvn help:effective-settings

マージされた `~/.m2/settings.xml` + グローバル + CLI `--settings` を出力します。ミラー / 資格情報の解決を追跡するのに便利です。

mvn help:effective-settings -s ./settings.xml
mvn -s <settings.xml> <phase>

1 つのビルドに対してユーザー `settings.xml` を上書きします — ミラー化されたリポジトリでの CI に便利です。

mvn -s ./.mvn/settings.xml deploy

プラグイン

mvn <plugin>:<goal>

単一のプラグイン ゴールを直接実行します。一般的なもの: `compiler:compile`、`surefire:test`、`jar:jar`、`deploy:deploy`、`dependency:tree`。

-D<param>=<value> ゴール パラメーター; -X デバッグ(非常に詳細)

mvn compiler:compile && mvn surefire:test -Dtest=*ServiceTest
mvn help:describe -Dplugin=<id>

プラグインのすべてのゴールとパラメーターを表示します。`<id>` を `groupId:artifactId` に置き換えてください。

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin

プロファイル

mvn -P<profile1>,<profile2> <phase>

`pom.xml` または `settings.xml` の `<profiles>` で宣言された 1 つ以上のプロファイルをアクティブにします。

mvn -Pprod,fast test
mvn -P!<profile> <phase>

既定でアクティブになるプロファイルを非アクティブ化します。

mvn -P!javadoc package

デバッグ

mvn -X <phase>

デバッグ ログを有効にします — すべてのプラグイン実行、リポジトリ ルックアップ、ダウンロード URL を出力します。ファイルにパイプします。

-e エラーの完全なスタック トレース

mvn -X test > mvn-debug.log 2>&1
mvn -e <phase>

任意の失敗時に完全なスタック トレースを出力します。最大詳細のために `-X` と組み合わせます。

mvn -e -X deploy
mvnDebug <phase>

Maven JVM の 1 行目でデバッガーをアタッチできるように、JDWP ソケット(既定ポート 8000)でビルドを停止して開始します。

mvnDebug test

ラッパー

./mvnw <phase>

Maven ラッパーを介してビルドを実行します — `.mvn/wrapper/maven-wrapper.properties` で固定された Maven バージョンを使用します。常にラッパーをチェックインしてください。

-Dmaven.version=<ver> この実行のために Maven をアップグレード

./mvnw clean install
mvn wrapper:wrapper

Maven ラッパー ファイル(`mvnw`、`mvnw.cmd`、`.mvn/wrapper/*`)を生成 / 更新します。

-Dmaven=<version> Maven ディストリビューション バージョンを固定

mvn wrapper:wrapper -Dmaven=3.9.6

その他

mvn --version

Maven バージョン、JDK、OS、ロケールを出力します。

mvn --version
mvn --help

すべての CLI フラグとサポートされるプロパティを一覧表示します。

mvn --help | head -40
mvn -B <phase>

バッチ / 非対話モード — 対話型プロンプトとカラー出力を無効にします。CI で不足しているプロパティでハングしないように使用します。

mvn -B -ntp clean verify
mvn -ntp <phase>

新しい転送プログレス バーを無効にします(CI で推奨;ログ ノイズを削減し、遅いミラーでの CPU スパイクを回避)。

mvn -B -ntp clean deploy
mvn -o <phase>

オフライン モード — リモート リポジトリに呼び出しません。必要なアーティファクトがローカル リポジトリにない場合は速く失敗します。

mvn -o test

関連コマンド速查

Maven について

Apache Maven は 2002 年にデビューした Java プロジェクト管理および理解ツールで、最初は Jason van Zyl によって作成されました。宣言的な `pom.xml`(Project Object Model)でプロジェクトをモデル化し、明確に定義されたビルド ライフサイクルを 8 つの既定フェーズで実行します:`validate`、`compile`、`test`、`package`、`verify`、`install`、`deploy`。Maven は、単一のリポジトリ レイアウト(`groupId:artifactId:version`)とリモート リポジトリからの依存関係解決(Maven Central)を強制した最初の主流 Java ビルド ツールでした。現在の安定版は Maven 3.9+ です。Maven はアーティファクトをローカル リポジトリ(既定では `~/.m2/repository`)にダウンロードし、推移的に解決し、オプションのスコープ(`compile`、`provided`、`runtime`、`test`、`system`、`import`)を持ちます。プラグインはライフサイクルを拡張します。一般的なものには `maven-compiler-plugin`、`maven-surefire-plugin`、`maven-jar-plugin`、`maven-deploy-plugin` があります。プロファイル(`-P`)は環境ごとに既定を上書きします。Maven はソース コードをアップロードしません — `deploy` は `distributionManagement` で構成されたアーティファクト(jar/war/pom)のみを出荷します。ラッパー スクリプト(`mvnw` / `mvnw.cmd`)はプロジェクトごとに Maven バージョンを同梱し、ツールチェーンをロックします。

チートシート バージョン 1.0.0