【メイヴン】

Maven(メイヴン) とは?

最終更新:
💡 Javaのビルドと依存ライブラリをまとめて管理

主にJavaプロジェクトで使われるビルド・プロジェクト管理ツール。pom.xmlと共通の規約を基に、依存ライブラリの取得やコンパイル、テスト、成果物作成を行う。

📌 このページのポイント
Maven:設定を読み、工程を進めるpom.xml + 標準の規約依存ライブラリ・プラグインなどcompileコンパイルtestテストpackageJARなどを作るmvn package:ここまでの工程を順に実行install → 自分の環境ローカルリポジトリへdeploy → 配布先リモートリポジトリへ
主なビルド工程を抜粋。Mavenのdeployは成果物のリポジトリへの配布を指します。
ひよこ ひよこ
Mavenって、Javaを書くエディター?
ペンギン先生 ペンギン先生
主にJavaプロジェクトで使われる、ビルドとプロジェクト管理のツールだよ。プログラムを書くエディターとは役割が違って、必要なライブラリを取得したり、コンパイル、テスト、成果物の作成を進めたりするんだ。
ひよこ ひよこ
何を作るかは、どこに書くの?
ペンギン先生 ペンギン先生
プロジェクトのpom.xmlに書くよ。POMはProject Object Modelの略で、プロジェクトの名前やバージョン、依存ライブラリ、使うプラグインなどを記述するXMLファイルなんだ。全部を一から指定する必要はなく、既定の設定も利用できるよ。
ひよこ ひよこ
規約で設定が減るって、どういうこと?
ペンギン先生 ペンギン先生
たとえばJavaのソースはsrc/main/java、テストのソースはsrc/test/javaに置くのが標準だよ。この構成を使えば、ファイルの場所を毎回指定する手間を減らせるんだ。必要なら設定を変更できるけれど、まず標準を知ると読みやすくなるよ。
ひよこ ひよこ
ライブラリは自分で全部ダウンロードするの?
ペンギン先生 ペンギン先生
通常はpom.xmlに依存ライブラリを指定すると、Mavenがリポジトリから取得するよ。そのライブラリが必要とする別のライブラリも扱えるんだ。ただし、異なるバージョンが要求されると選択の規則が働くので、依存関係の衝突を必ず解決してくれる、とは考えないでね。
ひよこ ひよこ
mvn packageを実行すると、何が起きるの?
ペンギン先生 ペンギン先生
標準のビルドライフサイクルでは、指定したpackageまでの工程を順に実行するよ。コンパイル、テストなどを経て、JARなどの成果物を作るんだ。各工程の処理は、成果物の種類やプラグインの設定によって決まるよ。
ひよこ ひよこ
deployって、本番のWebサイトを公開すること?
ペンギン先生 ペンギン先生
Mavenの標準のdeploy工程は、成果物をリモートのライブラリ用リポジトリへ配布する意味だよ。installは自分の環境のローカルリポジトリへ登録する工程なんだ。アプリを本番サーバーで起動する作業とは区別して覚えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Maven」って出てきたら「Javaのビルドとライブラリ管理をまとめる道具」と思えばだいたいOK!
📖 おまけ:英語の意味
「Maven」 = 知識を蓄えた人
💬 公式説明では、知識を蓄えた人を意味するイディッシュ語に由来する名前とされているよ。Javaプロジェクトのビルド手順を共通化する道具として使われるよ。

参考資料

← 用語集にもどる