Eclipseプラグインq4eでカンタンMaven入門(前編)
ビルドやテスト、依存ライブラリ追加は
自動化できる!
吉田英嗣
2008/3/25
皆さん、ビルドツールは何をお使いでしょうか? 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」のページ |
■ Mavenの特徴【1】高機能なライブラリ管理・依存ライブラリの“自動”追加
プロジェクトに必要なライブラリのバージョン不整合で問題になったことはありませんか?
開発者各人がライブラリを1つ1つ手作業でダウンロードして開発環境を準備していれば、そのような問題も必然的に起こってしまいます。これに対して、Mavenではプロジェクトが依存しているライブラリ群を「バージョンの整合性のある状態で」自動的にダウンロード・利用できるようになります。
■ Mavenの特徴【2】ビルド・スクリプト要らず
Antのビルド・スクリプト(build.xml)は、自動化したい作業が増えたり、規模が大きくなるにつれ、その記述・保守の作業の手間が大きくなってきます。
Mavenでは複雑なビルド作業でも、スクリプトを一から作ることなく、簡単に自動化できます。「ビルド手順は大体こうすべき(した方がよい)」「標準のディレクトリ構成」といった取り決めに基づいていることが、これを可能にする大きな理由になっています。
Ruby on RailsやSeasarなどの最近のフレームワークは、“規約”を設けることにより設定ファイルを減らす「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の仕組み |
■ ビルド・スクリプト要らず!? の「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のページ |
ちなみにq4eは、著名なスパイ映画「007」シリーズに登場し、数々の秘密兵器を開発する人物「Q」にちなんで名付けられています。
コラム 「m2eclipseとの比較」 |
||
q4eが「Eclipse公式のMavenプラグイン」にするために開発が行われていることは、将来性の意味でもm2eclipseとの大きな違いといえます。また、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実行できる環境を準備しておくのもよいでしょう。
q4eの動作に関する設定は、Eclipseメニューの[設定]→[Maven]から行うことができます(図5)。
![]() |
| 図5 q4eプラグインの設定 |
リモートリポジトリにアクセスしないで実行できるようにするオフライン設定[Work offline]や、ローカルリポジトリの場所やプロキシ設定に利用するMavenのsettings.xmlファイルの指定[User settings XML]などが行えます。
なお、settings.xmlで設定できる項目については、Mavenサイトの「Settings Reference」をご覧ください。
いよいよ次ページからは、q4eを使ったMavenの簡単な利用法を解説していきます。
| 1-2-3 |
| INDEX | ||
| Page1 | ||
| Antに代わるビルドツール「Maven」とは? Mavenの“肝”、「POM」と「リポジトリ」を理解する Maven利用を簡単にするプラグイン「q4e」とは? コラム 「m2eclipseとの比較」 コラム 「Mavenのインストール」 |
||
| Page2 | ||
| q4eでMavenを使ってみると、こんなに簡単! 注意! 「Javaコンパイラのエラー」 |
||
| Page3 | ||
| プロジェクトで利用するライブラリを“見える化” テスト結果などのレポート生成プラグインも豊富 Maven苦手意識は克服できるのか!? |
||
Eclipseプラグインq4eでカンタンMaven入門 バックナンバー 連載インデックスへ»
- 第1回 ビルドやテスト、依存ライブラリ追加は自動化できる!
- 最終回 Eclipse WTPを使ったWebアプリでもカンタンMaven
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -





