【Mavenとは】(※読み:メイブン)
Mavenは簡単に言うと、「開発を自動化してくれる便利な物」である。
Mavenは、プログラムをビルドすることを目的として利用する「ビルドツール」のひとつで、主にJavaで書かれたプロジェクトをビルドするために利用する。Eclipseと連携して利用することが多い。
【Mavenを使ってできること】
①ライブラリの管理
Mavenの最大のメリットが、「プロジェクトで利用するライブラリを管理できる」という点。
Javaには多くのライブラリが存在しており、それらのライブラリを使うことで高速に開発を進めることが可能。
Mavenでは、XMLに必要なライブラリの情報を記述することで、「そのプロジェクトに必要なライブラリ」を一元管理してくれる。
また、Mavenは依存性を管理する機能も備わっている。
例えば、あるライブラリAを使いたい場合、ライブラリAは、他のライブラリであるBを利用している場合、JavaのプロジェクトにはライブラリAとライブラリBを含める必要がある。
しかし、Mavenを利用した場合には、「ライブラリA」の情報のみを記述するだけで良くなる。
Maven上に存在するライブラリAには、「ライブラリBを利用するよ(依存関係がある)」ということが明記されており、Mavenはこの依存関係を自動で吸収してくれる。
プロジェクトには「ライブラリAを利用する」と記述するだけで、ライブラリBも自動で依存関係に含めてくれる。
このように、ライブラリの管理が非常に楽になるのがMavenの大きなメリットである。
②ライブラリの自動インストール
Mavenは利用するライブラリを管理するだけでなく、それらのライブラリを自動でインストールしてくれる。
先ほど紹介した「依存関係」を自動で検出し、必要なライブラリを一括でダウンロードしてくれる。
手動でライブラリをインストールする必要がないので、複数人で開発するときにありがちな「ライブラリのバージョンが違ったので挙動が異なってしまう」というような問題も発生しなくなる。
③ビルド
コマンドを実行するだけで、下記の処理を一括で行ってくれる。
・必要なライブラリのインストール
・Javaファイルのコンパイル
・自動テスト
・パッケージ(JarやWar)の作成
ビルドからテストまでを一括で実施してくれることで、人の手による作業を減らす役割を担っている。
そのため、複数人で開発をするような現場であればこのようなビルドツールは必須の存在である。
(補足)
・ビルド:おおまかに言うと「ソースコードに問題(バグ)がないか解析を行い、問題がなければ実行できる形のファイルに変換し、組み立てること」を言う。※開発環境によって、少し内容が異なっている場合もある。
・ライブラリ:便利なプログラムの部品を沢山集めて、ひとまとめにしたファイルのこと。
・XML:文章の見た目や構造を記述するためのマークアップ言語の一種。HTMLの一種。データの意味に合わせて要素名を自由に定義し、データを明確に目立たせることができるのが特徴。
・Jar(ファイル):Javaアプリケーションを実行するためのJavaクラスファイル、関連するメタデータ、リソースが1つのファイルに集約されているファイル。
・Warファイル:Webアプリケーションを開発するために必要なServlet、JSP、HTML、JavaScriptなどのファイルが含まれているファイル。
【Gradleとの違い】
同じく、Javaで使えるビルドツールとして「Gradle」が存在する。
実は、MavenもGradleもできることに大きな違いはない。
ただし、Gradleの方が後発であることもあり、Mavenの面倒な部分をより細かいカスタマイズができるようになっている。そのため、やりたいことによってMavenかGradleかを選ぶとよい。
【よく使うMavenコマンド】
・依存関係のライブラリをインストールする際には「install」コマンドを利用する。
「mvn install」
・作成したJUnitの単体テストを実行する場合には「test」コマンドを利用する。
「mvn test」
・javaファイルをコンパイルし.classファイルを作成する場合には、compileコマンドを実行。
「mvn compile」
・成果物としてjarやwarといったファイルを作成する際に実行するのが「package」コマンド。
「mvn package」
・ビルドの成果物をサーバー等へ公開する際に利用するのが「deploy」コマンド。
「mvn deploy」
・プロジェクトをクリーンし、ビルド結果を削除する場合には「clean」コマンドを利用する。ビルドに失敗した場合や、うまく動かない場合にはこのコマンドを利用する。
「mvn clean」