連載
» 2008年03月25日 00時00分 公開

Eclipseプラグインq4eでカンタンMaven入門(前編):ビルドやテスト、依存ライブラリ追加は自動化できる! (1/3)

[吉田英嗣,@IT]

 皆さん、ビルドツールは何をお使いでしょうか? Java開発におけるビルドツールといえば、Antが有名でしょう。しかし、最近、Antに代わるビルドツールとしてApache Mavenが地道に注目を集めてきています。

編集部注Antについて詳しく知りたい読者は、連載「現場に活かす Jakarta Project」第2回「AntでJavaのビルドを簡単にするをご参照ください。

 本稿では、連載「CoolなEclipseプラグイン」の番外編として、前後編に分けてMavenの概要とEclipse上でのMaven利用をサポートするプラグイン「q4e」を紹介します。

Antに代わるビルドツール「Maven」とは?

 「Maven」(メイヴェン、メイヴン)は、Antと同様に、プログラムのコンパイルテスト実行パッケージングなどのソフトウェア開発における一連の作業を自動化するためのツールです。ただし、Mavenは、Antにはない以下のような優れた特徴を持っています。

図1 「Apache Maven Project」のページ 図1 「Apache Maven Project」のページ

Mavenの特徴【1】高機能なライブラリ管理・依存ライブラリの“自動”追加

 プロジェクトに必要なライブラリのバージョン不整合で問題になったことはありませんか?

 開発者各人がライブラリを1つ1つ手作業でダウンロードして開発環境を準備していれば、そのような問題も必然的に起こってしまいます。これに対して、Mavenではプロジェクトが依存しているライブラリ群を「バージョンの整合性のある状態で」自動的にダウンロード・利用できるようになります。

Mavenの特徴【2】ビルド・スクリプト要らず

 Antのビルド・スクリプトbuild.xml)は、自動化したい作業が増えたり、規模が大きくなるにつれ、その記述・保守の作業の手間が大きくなってきます。

 Mavenでは複雑なビルド作業でも、スクリプトを一から作ることなく、簡単に自動化できます。「ビルド手順は大体こうすべき(した方がよい)」「標準のディレクトリ構成」といった取り決めに基づいていることが、これを可能にする大きな理由になっています。

 Ruby on RailsSeasarなどの最近のフレームワークは、“規約”を設けることにより設定ファイルを減らす「Convension over Configuration設定よりも規約)」を採用していますが、2004年に最初の安定バージョンがリリースされているMavenはその先駆けといえるでしょう。

編集部注Ruby on Railsついての詳細を知りたい読者は、記事「Javaから見たRuby on Rails」を、Seasarについては、連載「Seasar Projectの全貌を探るを、それぞれご参照願います。

Mavenの特徴【3】豊富なプラグイン

 Mavenは、コンパイルテスト実行などのビルドの基本的な作業のほかに、以下の実にさまざまな作業を支援するプラグインを提供しています。

テスト実行結果やカバレッジ測定結果のレポート生成
CheckStyle/PMDなどのソースコードチェックツールの実行とレポート生成
リモートサイトへのデプロイ
アプリケーション・サーバの起動
プロジェクトのWebサイト生成

 レポート生成のプラグインについては、後述します。

編集部注CheckStyleプラグインついての詳細を知りたい読者は、記事「コーディング規約に従わないコードを検索する」を、PMDプラグインについては、記事「Eclipseで使える静的解析ツール」を、それぞれご参照願います。

Mavenの“肝”、「POM」と「リポジトリ」を理解する

 Mavenでは、上述の特徴を実現するための重要な仕組みとして、POM(Project Object Model)とリポジトリがあります(図2)。後述するq4eプラグインを利用するうえで重要なため、ここで簡単に説明します。

図2 Mavenの仕組み 図2 Mavenの仕組み

ビルド・スクリプト要らず!? の「POM」

 POMは、Antでいうところのビルド・スクリプト(build.xml)に代わるものといえます。ただし、スクリプトのように処理をそのまま記述する形ではなく、大まかなビルドプロセスはほぼ固定のままにして、プロジェクトごとに異なる部分だけをパラメータとしてPOMファイルと呼ぶXMLファイル(pom.xml)に定義します。

 いい換えれば、「大きな処理の流れとしては可能な限り再利用して、違うところだけちょっと書きましょう」というスタイルになっており、これが「ビルド・スクリプト要らず」を実現しています。

 POMファイルには、主に、プロジェクトを識別するための情報や、プロジェクトが依存するライブラリなどが記述されます。

プロジェクトに必要なライブラリを自動ダウンロードする「リポジトリ」

 Mavenでは、プロジェクトに必要なライブラリを「依存関係も考慮して」自動的にダウンロードしてくれる機能があります。これは「リポジトリ」機能により実現されています。

 リポジトリには、「リモートリポジトリ」と「ローカルリポジトリ」とがあり、リモートリポジトリはネットワーク越しに提供されているリポジトリで、通常、Mavenプロジェクトがあらかじめ提供している「セントラルリポジトリ」を利用します。

 また、ローカルリポジトリはリモートリポジトリのキャッシュとして働くリポジトリで、Mavenを実行しているローカルマシンに作られます。ローカルリポジトリは、デフォルトでは「ユーザーディレクトリ/.m2/repository」に作られます。

そのほかはq4eプラグインを利用しながら身に付けましょう

 そのほか、Mavenを使ううえで知っておくべきことがまだありますが、後述のq4eプラグインを実際に利用する説明の中で触れていきます。また、Mavenの詳細についてはMavenのWebサイトを参照してください。

Maven利用を簡単にするプラグイン「q4e」とは?

 Eclipse上でMaven利用をサポートするプラグインとしてはm2eclipseが有名ですが、Eclipse公式のMavenプラグインを目指した、q4e(Q for Eclipse)プラグインが「Google Code」という開発ホスティングサービスで開発されています。

編集部注開発ホスティングサービスについて詳しく知りたい読者は、記事「ソースコードの宝石箱、●●Forgeを見逃すなかれ」をご覧ください。

Eclipseの公式Mavenプラグイン「q4e」

 q4eは、The Eclipse Integration for Apache Maven(Eclipse IAMとして、Eclipseプロジェクトへプロポーザルが提出されました。順調にいけばeclipse.orgで提供されることになり、まさにEclipseの公式Mavenプラグインになります。

図3 Eclipse IAMのページ 図3 Eclipse IAMのページ

 ちなみにq4eは、著名なスパイ映画「007」シリーズに登場し、数々の秘密兵器を開発する人物「Q」にちなんで名付けられています。

コラム 「m2eclipseとの比較」

q4eが「Eclipse公式のMavenプラグイン」にするために開発が行われていることは、将来性の意味でもm2eclipseとの大きな違いといえます。また、m2eclipseになくq4eにある機能としては、以下があります。

  • archetypeメカニズムによるMavenプロジェクトの新規作成ウィザード
  • ライブラリ依存関係をグラフィカルに表示
  • Mavenログのイベントビュー表示(ログのフィルタリングが可能)

ただ、m2eclipseとq4eの機能比較サイトを見ても分かるように、現時点ではm2eclipseの方が機能的に有利といえます。

図4 m2eclipseとq4eの機能比較サイト 図4 m2eclipseとq4eの機能比較サイト

しかし、両プラグインの開発者は、それぞれの内部で利用されている「Maven Embedder」というMavenライブラリの開発で協力し合っているため、今後、両者のいいところがマージされていくことに期待したいところです。

なお、m2eclipseについては、CoolなEclipseプラグイン(11)「ビルドを効率化するEclipseプラグインを参照してください。


q4eのセットアップ

 q4eプラグインをEclipseで利用するにはまず、下記のアップデートサイトからプラグインをダウンロードします。

・http://q4e.googlecode.com/svn/trunk/updatesite/

 なお、q4eプラグインには「Maven Embedder」というMaven 2.1ベースのMaven実装が入っています。よって、q4eプラグインをインストールすればMavenはインストールする必要がありません。一方で、ビルドツールの性格上、コマンドラインでMavenを実行したい場合もあるかもしれません。その場合は別途MavenのWebサイトからダウンロードしてインストールしてください(コラム「Mavenのインストール」参照)。

 以降、2008年3月の本稿執筆時の最新バージョンであるq4e 0.5.0の利用を前提として説明します。q4eプラグインは現時点でまだ開発途中のため多少不安定な部分も残っていますので、保険としてコマンドラインからMaven実行できる環境を準備しておくのもよいでしょう。

コラム 「Mavenのインストール」

MavenのWebサイトからアーカイブ・ファイルをダウンロードし、任意のディレクトリに展開します(ここでは、「%M2_HOME%」とします)。そして、以下の環境変数の設定を行います。

環境変数 ディレクトリ名
PATH %M2_HOME%\bin
JAVA_HOME JDKのインストール先(例えば、C:\Program Files\Java\jdk1.6.0_05など)
表1 「Maven2メニュー」と対応するMavenコマンド

上記完了後、コマンドプロンプトから以下を実行し、バージョン番号(2.0.8など)が表示されることを確認してください。

> mvn -version

 q4eの動作に関する設定は、Eclipseメニューの[設定]→[Maven]から行うことができます(図5)。

図5 q4eプラグインの設定 図5 q4eプラグインの設定

 リモートリポジトリにアクセスしないで実行できるようにするオフライン設定[Work offline]や、ローカルリポジトリの場所やプロキシ設定に利用するMavenのsettings.xmlファイルの指定[User settings XML]などが行えます。

 なお、settings.xmlで設定できる項目については、Mavenサイトの「Settings Reference」をご覧ください。

 いよいよ次ページからは、q4eを使ったMavenの簡単な利用法を解説していきます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。