用語集 最終更新 2026.09.13

Maven

Maven は、Java プロジェクトのビルドと依存管理を行う定番ツールです。 pom.xml という XML ファイルに、依存ライブラリ・ビルド手順・プロジェクト情報をまとめて書きます。

「規約に従えば設定は要らない」という思想

Maven は、ソースは src/main/java、テストは src/test/java、といったディレクトリ構成を前提にしています。この規約に乗っている限り、ビルド手順を書く必要はありません。

そしてライフサイクルが固定されています。mvn package と打てば、compile → test → package の順に必ず実行されます。「どのプロジェクトでも同じコマンドで同じことが起きる」ことが Maven の価値です。

Gradle との違い

Maven Gradle
記述 XML(宣言的) Kotlin / Groovy(プログラムを書ける)
柔軟性 低い(規約から外れにくい) 高い(何でもできる)
ビルド速度 素直だが遅くなりやすい キャッシュと差分ビルドで速い
読みやすさ 誰が読んでも同じに読める 書き方次第で難読化する

選択の軸は速度ではなく「柔軟性が必要か」です。長期保守の業務システムで、担当者が入れ替わりながら10年動かすなら、Maven の「変なことができない」性質はそのまま利点になります。

依存の落とし穴

Maven はライブラリの依存を再帰的に取り込みます(推移的依存)。このため、直接指定していないライブラリが勝手に入り、しかも別ライブラリと版がぶつかることが起きます。

mvn dependency:tree で依存の木を出せます。「なぜこのライブラリが入っているのか」「どの版が採用されたのか」が分からなくなったら、まずこれを見てください。バージョンを揃えたい場合は dependencyManagement で固定します。

実務で見るポイント

  • ローカルにキャッシュされる(~/.m2)。「手元では動くのに CI で落ちる」ときはここを疑う
  • 社内リポジトリ(Nexus など)を挟む構成が企業では一般的
  • Spring Boot は Maven / Gradle どちらでも使える。既存資産に合わせて選ぶ

同じライブラリの別の版がぶつかったときに、Maven と Gradle で選ばれる版が変わることは MavenとGradleの違いは? で実際に試しています。