mvnd
Maven Daemon 1.0+Maven Daemon(mvnd)コマンド速査集 —— 常駐 JVM デーモンで `mvn` をラップするツール。すべての mvn サブコマンドをそのまま使えるほか、デーモン管理用コマンド(--status / --stop / --shutdown など)を追加。
29 コマンド
デーモン管理
mvnd --status稼働中の mvnd デーモンを一覧表示:ID、JDK ホーム、バージョン、稼働時間、アイドル時間、完了済み/実行中ビルド数。スクリプトでは `-o plain` でプレーンテキスト出力。
-o plain|json 出力形式
mvnd --statusmvnd --stop1 つのアイドルデーモンを停止する。`--status` で表示されるデーモン ID を渡すこと。`-y` を付けない場合は確認プロンプトが出る。
-y 確認をスキップ
mvnd --stop 7d3c4e5f-a1b2-4c3d-9e0f-1234567890abmvnd --stop-all稼働中の mvnd デーモンをすべて停止。JDK アップグレード、`JAVA_HOME` 切り替え、または常にコールドスタートでビルドしたい CI の事前ステップとして便利。
mvnd --stop-allmvnd --shutdown`--stop-all` のエイリアス。動作は同じ。mvnd 1.0+ を明示対象とするスクリプトではこちらを推奨。
mvnd --shutdownmvnd --versionmvnd のバージョン、起動器の Java バージョン、デーモンで使用される Maven バージョンを表示。新しいデーモンが作られるか、既存のものが再利用されるかを確認する手段。
mvnd --versionmvnd --create-daemon既存のデーモンを再利用せず、現在の JDK と Maven バージョンで新しいデーモンを強制的に作成する。`JAVA_HOME` 切り替え後に、古いデーモンが古いクラスデータを保持したままになるのを避けるのに便利。
--user <name> JVM 設定プリセット
mvnd --create-daemon clean installライフサイクルフェーズ(mvn のドロップイン)
mvnd validateプロジェクトを検証:`pom.xml` の解析、スナップショットのダウンロード、依存関係の健全性チェック。`mvn validate` と完全同一。
mvnd validatemvnd compile`src/main/java` を `target/classes` にコンパイル。デーモンがウォームアップ済みの場合は `mvn compile` より格段に速い(JIT がプラグインを既に最適化済みのため)。
-DskipTests; -T 4 並列スレッド数(mvn に転送)
mvnd compilemvnd testSurefire 単体テストを実行。テストは依然として新しい JVM をフォークするため隔離は変わらず、効果が出るのは Maven 側のみ。
-Dtest=ClassName; -Dtest=Class#method; -DfailIfNoTests=false
mvnd test -Dtest=UserServiceTestmvnd package先行するフェーズをすべて実行し、出力を `target/*.jar`(または `.war`/`.ear`)としてパッケージング。
-DskipTests; -Dpackaging=jar
mvnd package -DskipTestsmvnd installverify を実行し、生成された成果物を `~/.m2/repository/` にインストールしてローカル他プロジェクトから依存可能にする。
mvnd install -DskipTestsmvnd clean install`target/` を消去して `install` まで一気に実行する「ゼロから再ビルド」の定番コマンド。デーモンが `clean` を跨いで生存するため、mvnd は mvn より圧倒的に速い。
-U スナップショット依存を強制更新
mvnd clean install -Umvnd deploy成果物をビルドし、`pom.xml` の `<distributionManagement>` に指定されたリモートリポジトリへ発行。`mvn deploy` と意味は同じ。
-DskipTests; -P release release プロファイルを使用
mvnd deploy -P release -DskipTestsデーモンチューニング
mvnd -Dmvnd.daemonStorage=<path> <phase>デーモンレジストリディレクトリを上書き(デフォルト `~/.m2/mvnd/`)。プロジェクトごとに独立したパスを指定すれば、worktree ごとに独立したデーモンプールを持てる。
mvnd -Dmvnd.daemonStorage=.mvnd clean installmvnd -Dmvnd.idleTimeout=<duration> <phase>デーモンがアイドル状態のとき自動終了するまでの時間。デフォルト 3h。`30s` / `5m` / `2h` / `1d` を受け付ける。
mvnd -Dmvnd.idleTimeout=30m testmvnd -Dmvnd.maxHeap=<size> <phase>デーモン JVM のヒープを制限。デフォルト 2G。他のツールとメモリを分けたいときは下げる、大規模マルチモジュールで OOM が出たら上げる。
mvnd -Dmvnd.maxHeap=4G clean installmvnd -Dmvnd.threads=<n> <phase>同時に生存させるデーモン数の最大値。デフォルト = CPU コア数。下げるとアイドルメモリを節約、上げると異なる JDK/Maven 構成の並列稼働を許可する。
mvnd -Dmvnd.threads=2 testmvnd -Dmvnd.scheduler=simple|async <phase>デーモン選択方式。`simple`(デフォルト)は最も最近使ったデーモンを使用、`async` は Maven/JDK ごとに 1 つずつデーモンを保持し、適合するものにディスパッチ。複数 JDK を切り替えるなら `async`。
mvnd -Dmvnd.scheduler=async installビルド制御(mvn に転送)
mvnd -DskipTests <phase>テストの実行はスキップするが、テストコードのコンパイルは行う。mvn と同じ — mvnd はすべての `-D` システムプロパティをそのまま転送する。
mvnd -DskipTests packagemvnd -T <n> <phase> / mvnd -T 1C <phase>並列 reactor ビルド。`-T 4` で 4 スレッド、`-T 1C` で CPU コアあたり 1 スレッド。暖まったデーモンと組み合わせれば、`-T 1C clean install` は mvnd で最速のフルビルドになる。
mvnd -T 1C clean installmvnd -B -ntp <phase>バッチモード / 非インタラクティブ / 転送進捗バーを無効化。CI で推奨の記述法 — 進捗バーと ANSI カラーを切るのでログパーサーが安定する。
mvnd -B -ntp clean verifymvnd -X <phase>デバッグログ。各プラグイン実行とリポジトリ参照をすべて出力。出力は大きいのでファイルにリダイレクト推奨。
-e エラー時に完全なスタックトレース
mvnd -X test > mvnd-debug.log 2>&1mvnd -pl <module> -am <phase>指定モジュールとその依存を構築する。`-amd`(also-make-dependents)は逆方向。フラグは mvn と完全に同じ。
mvnd -pl user-service -am testmvnd -s <settings.xml> <phase>このビルドだけ `~/.m2/settings.xml` を指定ファイルで上書き。CI ではミラーリポジトリやリリース認証情報の差し替えに使う。
mvnd -s ./.mvn/settings.xml deploymvnd -o <phase>オフラインモード — ローカルリポジトリにない成果物があると即座に失敗。mvnd はこのフラグをそのまま転送し、デーモン側で解決作業を行うだけ。
mvnd -o test診断
mvnd --log <phase>デーモン側の Maven ビルドログをフォアグラウンドにストリーム出力(デフォルトでは `~/.m2/mvnd/<daemon-id>/daemon.log` に書かれる)。デーモン内でのみ起きる失敗をデバッグするときに便利。
mvnd --log testmvnd --purgeデーモンレジストリディレクトリ(デフォルト `~/.m2/mvnd/`)を完全に削除。JDK/Maven のメジャーバージョンアップでバイトレイアウトが変わった後、古いデーモンが原因不明のエラーを出すことがある — purge してから作り直す。
mvnd --purgemvnd --helpmvnd 固有フラグ(`--status` ファミリー)をすべて列挙。完全な Maven フラグ(`-D` / `-P` / `-T` / `-pl` 等)は `mvn --help` を参照 — mvnd はそれらもすべてそのまま転送する。
mvnd --helpラッパー
./mvnw <phase>Maven Wrapper 経由でビルドを実行。mvnd を透過的に使いたいなら、wrapper を `mvndw` にシンボリックリンク/リネームするか、`.mvn/maven.config` で mvnd を呼ぶよう設定する。
./mvnw clean install関連コマンド速查
商標と利用についての告知
本コマンドラインツール・チートシート集はオープンコミュニティの参考資料です。本書で言及するツールの名前、ロゴ、商標(Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ など)はすべてそれぞれの権利者の財産であり、本書では識別および参照の目的のみに使用しています。
本チートシートの全内容は独立して作成された簡略化された自己完結型の参考資料であり、いかなる公式ドキュメントにも所属せず、承認されておらず、また引用されたものでもありません。コマンド一覧、オプションフラグの説明、コード例はすべて著者による独自の簡略化です。権威ある情報については、各ツールの公式ドキュメントを参照してください。
コマンドの構文およびオプションフラグはツールのバージョンによって異なる場合があります。表示されるバージョンタグは安定リリースを示しています。他のバージョンでは動作が異なる場合があります。本書は商標権者による推奨や選好を意味するものではありません。
商標権者または著作権者の方で、当サイトの一部内容について権利侵害の懸念がある場合は[email protected]までご連絡ください。有効な権利証明を受領次第、合理的な期間内に関連内容を修正または削除いたします。
当サイトの情報を利用したことで生じたいかなる直接的・間接的損害についても、当サイトは法的責任を負いません。
Maven Daemon について
Apache Maven Daemon(mvnd)は標準的な `mvn` CLI のラッパーで、Peter Palaga 氏が立ち上げたプロジェクトです。長年にわたり Apache Software Foundation でインキュベーションされ、2024 年に初の安定版 1.0.0 がリリースされました。mvnd はバックグラウンドで 1 つ以上の常駐 JVM デーモンを維持し、ビルド要求をそれらにディスパッチします。Maven 3.x と同じ `pom.xml` / `~/.m2/repository` / プラグイン / ライフサイクルをそのまま使うため、真のドロップイン代替です。`mvnd compile` は `mvn compile` と完全に同じ動作をしますが、速度だけが違います。高速化は 3 つの要素から生まれます。(1)JVM は 1 回だけ起動され複数のビルドで再利用されるため、`mvn` が毎回支払う 1〜3 秒の JVM 起動コストが消える。(2)mvnd はデーモン用 JDK に GraalVM を使うため、ウォームアップ時間と常駐メモリ使用量を削減できる。(3)1 つのデーモン内で複数モジュールのビルドを並列実行できる。効果の目安は小規模単一モジュールで約 2 倍、大規模マルチモジュール reactor では 10 倍以上にもなります。mvnd はデーモンレジストリを `~/.m2/mvnd/`(通常の `~/.m2/repository/` とは別)に書き込むため、異なる JDK のデーモンを共存させることができます。デーモンは設定可能なアイドルタイムアウト(デフォルト 3 時間)で自動終了します。すべての処理はローカルで行われ、ソースコードや成果物が外部に送信されることはありません。
チートシート バージョン 1.0.0