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

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

[吉田英嗣,@IT]

q4eでMavenを使ってみると、こんなに簡単!

 それでは、q4eを利用してMavenプロジェクトを作成・実行する手順を説明していきましょう。

Mavenプロジェクトの生成(archetypeの指定)

 Eclipseメニューの[ファイル]→[新規]→[プロジェクト]から実行できるMaven2プロジェクト生成ウィザード([Maven 2 Project]→[Maven 2 Project Creation Wizard])により、Mavenプロジェクトを新規作成します。

 q4eでは、コマンドラインからMavenでプロジェクトのひな型を作るときと同様に、「archetype」を指定して新規プロジェクトを生成できます。archetypeは、Mavenでプロジェクトのひな型を生成する際の「種」のようなもので、作りたいひな型のタイプによってさまざまなものが提供されています。

 例えば、以下などがあります。

・maven-archetype-quickstart:通常のJavaアプリケーション(JAR)開発用
・maven-archetype-webapp:Webアプリケーション(WAR)開発用
・maven-archetype-j2ee:J2EEJava EE)アプリケーション(EAR)開発用
・maven-archetype-mojo:Mavenプラグイン(Mojo)開発用

 また、archetypeは自分で作ることも可能なため、多くのサードパーティ製のarchetypeが提供されています。q4eでは、archetypeを一覧から簡単に選択できるようになっています。

 今回は通常のJavaアプリケーションのプロジェクトを作るため、ウィザード中の[Maven Archetypes]の選択では、「maven-archetype-quickstart」を選択します(図6)。

図6 archetypeの選択 図6 archetypeの選択

 最後に、Mavenプロジェクト情報([Maven Project Information])として、[Group ID](プロジェクトの所属を示すID)などを設定します(図7)。

図7 Mavenプロジェクト情報の設定 図7 Mavenプロジェクト情報の設定

 まずは最低限、以下のことを意識して設定しておけば大丈夫です。

・ビルドの結果、生成されるJARファイルの名前が、[Artifact ID]の値+「-」[Version]の値+「.jar」となる。例えば、図7のように設定した場合、「sampleapp-0.0.1.jar」となる

・JARファイルがMavenリポジトリに配置されるとき、その配置場所が「[Group ID]の値のドット区切りのディレクトリ+「/」+[Version]の値+「.jar」となる。例えば、図7のように設定した場合、「com/example/0.0.1/sampleapp-0.0.1.jar」となる

 ウィザードを[終了]すると、ひな型プロジェクトの生成が開始されます(1度目はMaven実行自体に必要なプラグインをダウンロードするため少し時間がかかります)。

Mavenの実行ログを見る

 なお、Maven実行のログを見たい場合は、[Maven Events]ビューを表示させておく必要があります。[Maven Events]ビューは、[メニュー]の[ウィンドウ]→[ビューの表示]→[その他]から[Apache Maven]→[Events]を選択すると表示されます。

 [Maven Events]ビューでは、ログレベル(debug/info/errorなど)によりログをフィルタリングして表示できるようになります(図8)。

図8 [Maven Events]ビュー 図8 [Maven Events]ビュー

注意! 「Javaコンパイラのエラー」

生成中[Maven Events]ビューに下記のようなエラーが表示されるかもしれません。これは、q4eのMaven実行時に使われるJavaコンパイラ(tools.jar)を、Eclipseを起動しているJVMを基に見つけようとするため起こります。そのため、コンパイル実行が含まれるゴールを指定してMavenを実行した際にも同じエラーが発生してしまいます。

An error occurred in phase mojoExecution with the exception org.apache.maven.plugin.CompilationFailureException: Compilation failure Unable to locate the Javac Compiler in:
C:\Program Files\Java\jre1.6.0_05\..\lib\tools.jar 

これを解決する方法は、主に以下の2つがあります。

  1. Eclipseの起動コマンドの「-vm」オプションでJDKに入っているjavaw.exeを指定する
  2. プロジェクト定義ファイル(pom.xml)もしくはMaven設定ファイル(settings.xml)で、Maven実行の際に使われるコンパイラを指定する

ここでは比較的簡単な方法である1の例を示します。Eclipseの起動アイコンの右クリック[プロパティ]の[リンク先]に、以下のように「-vm」オプション指定を追記します(Eclipseフォルダにある「eclipse.ini」ファイルに同様の設定を追記することもできます)。

C:\eclipse\eclipse.exe -vm "C:\Program Files\Java\jdk1.6.0_05\bin\javaw.exe" 

Mavenにおける標準ディレクトリ構造

 生成されたひな型プロジェクトは図9のような構成になっています(パッケージ・エクスプローラ表示の場合)。

図9 ディレクトリ構成 図9 ディレクトリ構成

 この構造は、Maven界で標準とされているディレクトリ構造に従っているものとなっており、ソースコードはsrc/main/javaに、テストコードはsrc/test/javaに格納するようになっています。

 Mavenの標準ディレクトリ構造の詳細については、Mavenサイト内の「Introduction to the Standard Directory Layout」を参照してください。

 また、生成されたプロジェクトの中には、POMファイル(pom.xml)も生成されています。コンパイル後のクラスファイルやJARファイルなどはtargetディレクトリに格納されます。

 q4eで生成したプロジェクトは、「Maven Classpath Container」というクラスライブラリが設定されている状態ですが、これはプロジェクトの依存ライブラリをEclipse上で利用できるようにするもので、POMファイルで記述している依存ライブラリの設定に同期するようになっています。

 生成されたプロジェクトでのMaven操作は、主にパッケージ・エクスプローラのプロジェクトのコンテキストメニュー(右クリック)の[Maven2]のメニューから実行できます(図10)、以降、このメニューを「Maven2メニュー」と呼びます)。基本的にMavenのコマンドを意識する必要はありません。

図10 q4eの「Maven2メニュー」 図10 q4eの「Maven2メニュー」

コンパイル! テスト!! パッケージング!!!

 Mavenのスゴさは、プロジェクトを新規生成した時点で、すでにコンパイルからJUnitテスト実行、JARファイルへのパッケージングまでが自動実行可能になっていることです。

 q4eでは、「Maven2メニュー」の[Package Artifact]を選択するだけでコンパイル・テスト・パッケージングが一気に実行できます。

 実行後、targetディレクトリにJARファイル(ここでは、sampleapp-0.0.1.jar)が作成されているはずです。素晴らしいことに、ここまで何もビルドスクリプトを書いていないにもかかわらず、すでにビルドプロセスが自動化されているのです!

 ちなみに、Maven2メニューの「Package Artifact」はMavenコマンドでいう「mvn package」に当たりますが、ほかの「Maven2メニュー」を含めて整理した表2を以下に示します。

Maven2メニュー 説明 対応するMavenコマンド
[Package Artifcact] コンパイル・テスト・パッケージングまでを実行 mvn package
[Locally Install Artifact] [Package Artifcact]に加えて、ローカルリポジトリへの配備までを実行 mvn install
[Deploy Artifact] [Locally Install Artifact]に加えて、リモートリポジトリへの配備までを実行(リモートリポジトリの情報をpom.xmlに記述しておく必要あり) mvn deploy
[Generates Reports] Webサイトの生成 mvn site
[Execute Goal] 任意のゴール(フェイズ)を実行 mvn (指定)
表2「Maven2メニュー」と対応するMavenコマンド

 [Execute Goal]を利用すれば任意のゴールフェイズ)を実行することもできます。

 [Execute Goal]では[Goal](ゴール名)、[Goal Properties](ゴール実行に必要なパラメータ)を指定するウィンドウが現れますので、そこにゴールに関する情報を入力します。Goalは「プラグイン名:プラグインのゴール」で指定します。例えば、テストを実行するときは Goalに「surefire:test」(surefireプラグインのゴールtest)を指定します。

 また、[Execute Goal]はフェイズ指定でも実行できますが、ここでは割愛します。利用できるプラグインとゴールに関する情報については、Mavenプロジェクト提供のプラグイン情報サイトを参照してください。

 続いて次ページでは、プロジェクトで利用するライブラリを“見える化”するさまざまな機能やテスト結果などのレポートを生成するプラグインをいくつか紹介します。

Copyright © ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

RSSについて

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

メールマガジン登録

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