Maven によるプロジェクトのビルド

当ブログでは Struts, Wicket, Velocity, MyBatis など Java に関する様々なフレームワークやツールを紹介してきました。また、その際には、必要なライブラリは各サイトからダウンロードしてきて自前で用意する形を取ってきました。

しかし、実際の開発において、これらをいちいち自分でやるのは面倒ですし、また、新しいツールを導入するときには、初心の方にとってはどの jar が必要なのかわからず困難を伴います。

「こういうプロジェクトを作ってください」と指示をしたら、自動でそのプロジェクトを作ってくれて、必要な jar も全部自動で持ってきてくれる…そんな便利なツールがあればいいですよね。そうすれば、覚えるのはその便利なツールの使い方だけです。これを使うにはこれこれの jar が必要で…なんて覚える必要がなくなります。

その便利ツールこそが今回ご紹介する Maven です。Maven を使って作りたいプロジェクトのタイプを選び、プロジェクトのひな型を作ります。その際に、必要な jar ファイルは Maven が判断して自動でダウンロードします。したがって、必要な jar を自分でダウンロードしてくる手間が省けます。

Maven のインストール

以下のサイトから Maven をダウンロードします。現時点での最新版は 3.0.5 です。
Maven - Welcome to Apache Maven

ダウンロードしてきたら、apache-maven-3.0.5-bin.zip 内の apache-maven-3.0.5 フォルダの中身を適当なフォルダにコピーします。私は C:\Maven に入れました。

続いて環境変数 M2_HOME を設定します。スタートメニューの「コンピュータ」の「プロパティ」を開き、「システムの詳細設定」をクリックします。「環境変数」をクリックして環境変数 M2_HOME を作成し、値は先程 Maven のファイル群をコピーしたフォルダにします。

次に環境変数 PATH に

%M2_HOME%\bin

を追加します。

ここまでできたら、コマンドプロンプトを開いて

mvn -version

を実行してみてください。

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 22:51:28+0900)
Maven home: C:\Maven
Java version: 1.7.0_17, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_17\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows vista", version: "6.0", arch: "x86", family: "windows"

のように Maven のバージョンや Java のバージョンに関する情報が表示されればインストールは成功しています。

m2e のインストール

EclipseMaven を利用するためのプラグインである m2e があります。これを使うと Maven でビルドしたプロジェクトを Eclipse のプロジェクトとしてインポートできます。[Windows] → [Preferences] から [Install/Update] → [Available Software Sites] と進んで以下の URL を追加します。
http://download.eclipse.org/technology/m2e/releases

Maven の使用例

試しに Maven を使って Wicket Quickstart をビルドしてみましょう。ちなみに Wicket は現在 6.6.0*1が最新です。

Wicket Quickstart は以下のサイトで Maven のコマンドが生成できます。
Apache Wicket - Create a Wicket Quickstart
GroupId にはソースファイル群の入るパッケージ名を、ArtifactId にはプロジェクト名を入れます。とりあえず当サイトでは「赤猫堂本舗」の URL をとってパッケージ名は jp.mydns.akanekodou にしています。プロジェクト名は wicketapp とします。

mvn archetype:generate -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=6.6.0 -DgroupId=jp.mydns.akanekodou -DartifactId=wicketapp -DarchetypeRepository=https://repository.apache.org/ -DinteractiveMode=false

長いですがこれは 1 行で入力します。コピーしてコマンドプロンプトに張り付けられますのでその方が間違いがなくて良いでしょう。Eclipseワークスペースのフォルダに移動してこのコマンドを実行してください。

実行するとしばらくの間いろいろなメッセージが出ますが、最終的に

[INFO] BUILD SUCCESS

と表示されればビルドは成功です。

次に Eclipse を起動して今作った Maven プロジェクトをインポートします。Project Explorer を右クリックして [Import] → [Import...] を選択します。その中に [Maven] というのがありますので、メニューを展開して [Existing Maven Project] を選択して [Next >] をクリックします。

[Root Directory] にワークスペースディレクトリを入れると、そのディレクトリ内を検索して pom.xml を見つけてきます。pom.xmlMaven プロジェクトのルートディレクトリに配置されていて、このファイルの有無で Maven プロジェクトかどうかを判断します。

/wicketapp/pom.xml にチェックを入れて [Finish] をクリックするとプロジェクトのインポートが始まります。

インポートが終わると Project Explorer に wicketapp というプロジェクトができているはずです。ちなみにこんなフォルダ構成になっています。

見てお分かりの通り、これは動的 Web プロジェクトではありませんので、Server に追加してホットデプロイすることはできません。しかし、src/test/java の中に Start.java というのがあります。これを Java アプリケーションとして実行すると、プロジェクト内に Jetty という Web アプリケーションサーバが組み込まれているので、それを起動してこのプロジェクトを実際に動かすことができます。また、war ファイルとしてエクスポートすれば、自動的に Web アプリケーション向けのフォルダ構成に変換してエクスポートしますので、自分でいちいちフォルダ構成を直す必要はありません。もちろん、このプロジェクトは Wicket アプリケーションのひな型としてそのまま使えますので、このプロジェクトに手を加えて自分だけの Wicket アプリケーションを作成することもできます。

Maven はこんなことにも使える

他にも、Maven を使って、JVM 上で動作するスクリプト言語である Scala のプロジェクトや Groovy のプロジェクトを作成することができます。ここで重要なのが「Scala や Groovy をあらかじめインストールしておく必要はない」ということです。これらに関しても、Maven は必要なライブラリを自動でダウンロードしてくれるので、開発目的であれば何ら不自由がないのです。

Maven は必要不可欠になる ?

フレームワークの巨大化に伴い、プロジェクトを手動で管理することは困難な状況になりつつあります。プロジェクトの管理を自動化する Maven は、これからの開発においては必要不可欠と考えておいて間違いありません。Maven の使い方さえ覚えてしまえば、もう jar ファイルの依存関係に頭を悩ませる必要はありません。開発に集中するためにはマスターしておきたいツールです。

Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集

Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集

*1:バージョンの表記が変わっていますが、1.5.x 系統からの大幅な変更は特にありません。