Maven(Apache Maven)
※読み:メイブン
【Mavenとは】
Mavenは、プログラムをビルドすることを目的として利用する「ビルドツール」のひとつで、主にJavaで書かれたプロジェクトをビルドするために利用する。
ざっくり言うと、「Mavenを使うことでJavaプロジェクトの開発が楽になる」。
Eclipseと連携して利用することが多い。
【Gradleとの違い】
同じく、Javaで使えるビルドツールとして「Gradle」が存在する。
実は、MavenもGradleもできることに大きな違いはない。
ただし、Gradleの方が後発であることもあり、Mavenの面倒な部分をより細かいカスタマイズができるようになっている。そのため、やりたいことによってMavenかGradleかを選ぶとよい。
【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)の作成
上記の処理を一括で実行できる。
ビルドからテストまでを一括で実施してくれることで、人の手による作業を減らす役割を担っている。
そのため、複数人で開発をするような現場であればこのようなビルドツールは必須の存在と言える。
【よく使うMavenコマンド】
・依存関係のライブラリをインストールする際には「install」コマンドを利用する。
「mvn install」
・作成したJUnitの単体テストを実行する場合には「test」コマンドを利用する。
「mvn test」
・javaファイルをコンパイルし.classファイルを作成する場合には、compileコマンドを実行。
「mvn compile」
・成果物としてjarやwarといったファイルを作成する際に実行するのが「package」コマンド。
「mvn package」
・ビルドの成果物をサーバー等へ公開する際に利用するのが「deploy」コマンド。
「mvn deploy」
・プロジェクトをクリーンし、ビルド結果を削除する場合には「clean」コマンドを利用する。 ビルドに失敗した場合や、うまく動かない場合にはこのコマンドを利用する。
「mvn clean」
【引用サイト】
・https://qiita.com/tarosa0001/items/e5667cfa857529900216
・https://camp.trainocate.co.jp/magazine/about-maven/