Maven 3.9系の最新バージョンと、3.6.3・3.8系との違い

最新安定版はMaven 3.9.16

2026年8月5日時点の最新安定版はMaven 3.9.16です。Apache Maven公式が全利用者へ推奨しています(出典:Apache Software Foundation「Downloading Apache Maven and Maven Daemon」)。3.9系はJDK 8以上で動作し、3.6.3や3.8系からの移行も容易です。3.6.3は2023年以降セキュリティアップデートが提供されておらず、3.8系もすでにメンテナンス対象外となっています。新規プロジェクトでは3.9系の最新版を選択してください。

3.6.3・3.8系からの主な変更点

3.6.3は長期保守版として利用されてきましたが、Java 17以降のサポートが不完全でした。3.8系ではJava 17対応が強化され、3.9系ではJDK 21やJDK 25といった最新LTSとの互換性が大幅に改善されています。また、3.9系ではビルドの再現性向上のための機能追加や、非推奨APIの削除が段階的に進められています。3.6.3で使用できた一部の古いプラグインは、3.9系で動作しない場合があるため注意が必要です。

バージョン移行時の注意点

3.6.3から3.9系へ移行する場合、最初に自社プロジェクトのJDK要件を確認してください。3.9系自体はJDK 8以上で動作しますが、利用プラグインが新しいJDKを要求するケースがあります。また、Maven 3.8.1以降ではHTTPリポジトリがデフォルトでブロックされる設定が追加されました。社内リポジトリがHTTPで運用されている場合は、設定ファイルの見直しが必要です。

要点:3.9系の最新安定版は3.9.16。3.6.3はメンテナンス終了、3.8系も非推奨。JDK 21以降との互換性が最大の違いです。

Maven 3.9.9、3.9.12、3.9.14、3.9.15など各バージョンの特徴

3.9.9:安定性向上とバグ修正に注力

Maven 3.9.9は3.9系の中盤でリリースされた安定版です。このバージョンでは、大規模マルチモジュールプロジェクトでのビルドパフォーマンス改善と、依存関係解決時のエラーメッセージの明確化が行われました。特定のコーナーケースで発生していたビルドエラーが修正され、Java 21との互換性も確保されています。ただし、3.9.16で修正された脆弱性が含まれているため、現在は使用を推奨しません。

3.9.12と3.9.14:JDK 25対応とプラグイン互換性

3.9.12はJDK 25の早期アクセス版との互換性テストが本格化したバージョンです。3.9.14では、Maven 4への移行準備として非推奨APIの警告が追加されました。また、依存関係の競合解決アルゴリズムに小規模な改良が加わり、ビルドの再現性が向上しています。CIパイプラインでのトラブルを避けたい場合は、最低でも3.9.14以上へのアップデートが推奨されます。

3.9.15と3.9.16:最新の安定性とセキュリティ修正

3.9.15ではセキュリティ脆弱性への対応と、大規模プロジェクトでのメモリ使用量の最適化が行われました。そして3.9.16が2026年8月時点で最新かつ推奨される安定版です。3.9.16には、これまでのすべてのバグ修正とセキュリティパッチが含まれています。新規導入やバージョンアップを検討している場合は、3.9.16を選択してください。これ以前のバージョンには既知の問題が残存している可能性があります。

要点:3.9.16が最新推奨版。3.9.9-3.9.15は段階的な改善版で、現在は3.9.16への移行が推奨されます。

Mavenのダウンロード手順とJDKバージョンとの関係

動作に必要なJDKバージョン

Maven 3.9系の実行にはJDK 8以上が必要です(出典:Apache Software Foundation「Downloading Apache Maven and Maven Daemon」)。これはMaven本体を動かすためのJDKであり、ビルド対象のJavaバージョンとは別です。例えば、JDK 21でMavenを実行しながら、Java 8向けのコードをコンパイルできます。Maven 4ではJDK 17以上が必須となるため、将来の移行を見据えてJDK 17以降の利用をおすすめします。

ダウンロードとインストール手順

  1. 公式サイト(https://maven.apache.org/download.cgi)から最新安定版のBinary zipまたはtar.gzをダウンロード
  2. 任意のディレクトリに展開(例:C:\Program Files\Apache\Maven または /opt/maven)
  3. 環境変数PATHに展開先のbinディレクトリを追加
  4. ターミナルでmvn -vを実行し、バージョンと使用JDKを確認

LinuxやmacOSではsdkmanやHomebrewでもインストール可能ですが、最新版への追従が遅れる場合があります。

JDK選択の仕組みとToolchains

Mavenを実行するJDKとビルド対象のJDKはToolchainsプラグインで分離管理できます。システムのPATHで指定されたJDKがMaven実行に使われ、Toolchainsで指定した別のJDKがコンパイルに使用されます。複数バージョンのJavaをターゲットにするマルチモジュールプロジェクトでは、この設定が必須です。Toolchains未設定の場合、Maven実行用JDKでコンパイルされるため注意してください。

要点:3.9系はJDK 8以上で動作。公式サイトからダウンロードしPATH設定。ビルド対象JDKはToolchainsで分離可能です。

Maven 3.9系を選ぶべき理由と、Maven 4(RC版)との使い分け方

3.9系を選ぶ理由は安定性と実績

本番プロジェクトではMaven 3.9系を選択すべきです。3.9系は長期にわたる運用実績があり、主要IDEやCIツールとの互換性が完全に検証されています。JetBrainsの2025年調査ではJava開発者の67%がMavenを利用しており、その大多数が3.9系を使用しています(出典:JetBrains「The State of Java 2025」)。安定稼働が求められる商用プロジェクトでは、RC版ではなく安定版を選んでください。

Maven 4(RC版)の現状と制約

Maven 4.0.0-rc-6はプレビュー版であり、公式は本番利用に安全ではないと明言しています(出典:Apache Software Foundation「Downloading Apache Maven and Maven Daemon」)。実行にはJDK 17以上が必要で、APIの破壊的変更が含まれます。サードパーティプラグインの中にはMaven 4未対応のものがあり、既存プロジェクトをそのまま移行するとビルドエラーが発生する可能性が高いです。

プロジェクトフェーズ別の使い分け方

利用シーン 推奨バージョン 理由
本番開発・商用プロジェクト 3.9.16 安定性・互換性が完全に検証済み
新規学習・個人開発 3.9.16 トラブル情報が豊富で解決が容易
Maven 4移行の事前検証 4.0.0-rc-6 テスト環境限定で互換性確認に使用
CI/CDパイプライン 3.9.16 安定稼働が最優先

Maven 4は正式安定版がリリースされるまで、本番環境への導入を控えてください。

要点:3.9系は本番向け安定版、Maven 4はRC版で本番利用不可。プロジェクトの安定稼働を優先するなら3.9.16一択です。

Maven導入後に確認したい、バージョン確認コマンドと基本操作

バージョン確認と環境診断

導入後はまずmvn -vでMavenとJDKのバージョンを確認します。出力にはMavenバージョン、使用中のJDKベンダー、JDKバージョン、OS情報が含まれます。期待したJDKが表示されない場合は、JAVA_HOME環境変数が正しく設定されているか確認してください。MavenはJAVA_HOMEを優先的に参照するため、PATHのjavaコマンドと異なるJDKが使われる場合があります。

基本操作:ビルドライフサイクルの理解

Mavenの主要フェーズはcompile→test→package→install→deployの順で実行されます(出典:Apache Software Foundation「Introduction to the Build Lifecycle」)。mvn packageと実行すると、compileとtestが自動的に実行された後、JARやWARが生成されます。mvn installはローカルリポジトリへの登録まで行いますが、リモートリポジトリへの公開は行いません。公開にはmvn deployが必要です。

依存関係トラブル時の確認コマンド

  • mvn dependency:tree:依存関係のツリー構造を表示し、競合を視覚的に確認
  • mvn clean:過去のビルド成果物を削除し、クリーンな状態で再ビルド
  • mvn -X:デバッグモードで実行し、詳細なエラー情報を出力

ビルドエラーが発生した場合は、まずmvn cleanを試し、解決しない場合はdependency:treeで依存関係の競合を確認してください。

要点:mvn -vで環境確認、mvn packageが基本操作。dependency:treeで依存競合を調査できます。