Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

mavenのプラグインを作成して独自のレポートを追加する

mavenのドキュメント生成機能のカスタマイズ

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/01/17 12:00

mavenは、プロジェクトの情報をまとめたサイトを自動生成する機能が標準で備わっています。標準のままでも豊富なレポートを利用できますが、独自のレポートを追加できれば、より円滑にプロジェクトを進めることができるでしょう。今回は、その方法を具体的な例を基に詳しく解説します。

目次

はじめに

 ソフトウェアの開発手法は日々進化しており、ビルドツールやバージョン管理ツールなど、便利なものが出てきました。mavenはこれらの便利なツールを統合し、プロジェクト単位で管理できるようにするツールです。前回の記事『Mavenを利用してオールインワンのプロジェクト環境を構築する』では、単体テスト、ドキュメント作成、CVSの操作をmaven上から一貫して行う方法を見ました。本稿では、前回扱ったドキュメント作成をカスタマイズし、独自のレポートを追加できるようにします。例えば、プロジェクトの要件定義書を追加したい、データベーステーブルの定義書を載せたいといった場合にはレポートの追加が必要になります。

 本稿では、前回の記事などにより、ドキュメントの作成方法やmavenの基本的な知識、インストール方法、操作方法を知っていることを前提として、話を進めていきます。

 mavenに独自のドキュメントを追加する場合、特定のゴールを持つプラグインを作成します。よって、今回は大きく次の2点を扱います。

  1. プラグインの基本的な作成方法
  2. レポートを追加するプラグインの作成

対象読者

 Javaプログラミングを行ったことがあり、mavenの操作方法についてある程度の知識を持っている方を対象としています。mavenの基本的な操作方法はmavenのホームページ、または拙稿『Mavenを利用してオールインワンのプロジェクト環境を構築する』などを参照してください。

必要な環境

 このサンプルはJ2SE Development Kit 1.4.2Maven-1.0.2にて動作を確認しています。

サンプルの概要と注意

 サンプルには次の二つのディレクトリが含まれています

  1. 「maven-sample-plugin」ディレクトリ(プラグインを作成するプロジェクト)
  2. 「sample」ディレクトリ(プラグインを試すためのサンプルプロジェクト)

 サンプルを試す場合、この2つのディレクトリを任意の作業用ディレクトリ(例えば、「C:\dev」)に配置し、以下のように操作します。

  1. 「maven-sample-plugin」ディレクトリにカレントディレクトリを移動
  2. 「maven-sample-plugin」プラグインをインストール(詳細は後述)
  3. 「sample」ディレクトリにカレントディレクトリを移動
  4. siteゴールの実行

プラグインとmavenの関係

 mavenのプラグインは、mavenコマンドにプラグインの持つゴール名を指定することで実行されるプログラムです。mavenでは、例えば次のように操作すると、プロジェクトのコンパイルを行うことができます。

プラグインの例
> maven java:compile

 この機能はmavenに標準で備わっていますが、maven自身がプロジェクトをコンパイルする機能を持っているのではありません。プロジェクトをコンパイルするプラグインが、mavenに標準で装備されているのです。プラグインは、mavenをインストールしたディレクトリ(以下、MAVEN_HOME)の直下にある「plugins」ディレクトリの中に、jarファイルとなってインストールされていますが、その中の「maven-java-plugin-1.5.jar」というプラグインがjava:compileゴールを持つプラグインとなっています。

 mavenは、maven単体でさまざまな機能を提供しているのではなく、実は、多くのプラグインによって機能を提供しているのです。mavenは、ソフトウェア開発のプロジェクトに必要なさまざまな機能(=プラグイン)の言わばポータルとして機能しています。

プラグインの基本的な作成方法

 独自のレポートを作成できるようにするには、レポートを作成するためのプラグインを作成します。まずは簡単なプラグインの作成方法について解説します。

プロジェクトの作成

 プラグインの作成方法は、通常のmavenのプロジェクトを作成する方法とほとんど一緒です。まずはプラグインを作るためのプロジェクトを作成しましょう。以下のように、mavenコマンドのgenappゴールを使い、プロジェクトを作成してください。サンプルでは、「c:\dev」という作業ディレクトリ上で、maven-sample-pluginというプロジェクトを作成します。

プロジェクト作成
>cd c:\dev\maven-sample-plugin
> maven genapp
...
Enter a project template to use: [default]
[Enter]
Please specify an id for your application:  [app]
maven-sample-plugin[Enter]
Please specify a name for your application:  [Example Application]
Maven Sample Plugin[Enter]
Please specify the package for your application:  [example.app]
project.wings.maven.sample[Enter]
build:start:
...

 以上の操作で、「c:\dev\maven-sample-plugin」ディレクトリの中に「project.xml」が生成されます。このファイルを以下のように編集します。

プラグインの「project.xml」
<project>
  <pomVersion>3</pomVersion>
  <id>maven-sample-plugin</id>
  <name>Maven Sample Plugin</name>
  <currentVersion>1.0</currentVersion>
  <build>
    <resources>
      <resource>
        <directory>${basedir}/plugin-resources</directory>
        <targetPath>plugin-resources</targetPath>
      </resource>
      <resource>
        <directory>${basedir}</directory>
        <includes>
          <include>plugin.jelly</include>
          <include>plugin.properties</include>
          <include>project.properties</include>
          <include>project.xml</include>
        </includes>
      </resource>
    </resources>
  </build>
</project>

 以上でプラグインを作る準備は終わりました。では、具体的な機能を持つプラグインを作ってみましょう。

プラグインの実装

 mavenのプラグインを作成するには、次の表にあるファイルを作成します。

プラグイン作成に必要なファイル
ファイル名説明必須かどうか
project.xmlプラグイン自身のプロジェクト定義ファイル。既に作成済み。必須
plugin.jellyプラグインを実行するゴールの定義や、プラグインの機能を実装するファイル。必須
plugin.propertiesプラグインに用いられる任意のプロパティを定義したファイル。任意

 これらのファイルは、いずれもプラグインのプロジェクトのルートディレクトリ(サンプルでは、「c:\dev\maven-sample-plugin」ディレクトリ)直下に配置します。

 以下、プラグインのプロジェクトのルートディレクトリ(サンプルでは、「c:\dev\maven-sample-plugin」ディレクトリ)をプラグインルートと表記します。また、プラグインを実行するためのサンプルプロジェクト(サンプルでは、「c:\dev\sample」ディレクトリ)をプロジェクトルートと表記します。

 その他に、スタイルシートなどのプラグインで必要なリソースがあれば、「プラグインルート\plugin-resources」ディレクトリ以下に配置します。また、javaなどのプログラムファイルが必要であれば、プラグインルート以下に配置します。

 では、「plugin.jelly」ファイルを作成します。「plugin.jelly」ファイルはJellyというXMLの記述方式に沿ったスクリプト言語で記述します。Jellyについての情報はJellyのホームページなどを参照してください。ここではサンプルの簡単な解説のみで、Jellyの詳しい文法やプログラミング方法については扱いません。

 以下のようにファイルを作成してください。

plugin.jelly
<project xmlns:ant="jelly:ant" >
  <goal name="maven-sample-plugin:description"
        description="Echo This Goals Description"> 
    <ant:echo>Sample Plugin for Maven</ant:echo> 
  </goal> 
</project>

 このサンプルでは、「maven-sample-plugin:description」という名前のゴールを定義しています。ここでは、標準出力先(Windowsでは標準でコマンドプロンプトの画面)に「Sample Plugin for Maven」と表示させるゴールを定義しています。

 「plugin.jelly」ファイルには、project要素の中に作成したいゴールをgoal要素として登録していきます。goal要素は複数登録することができます。ここで出てきた要素を以下にまとめます。

「plugin.jelly」で使用した要素1
要素名説明
<project>「plugin.jelly」のルート要素。「plugin.jelly」内の名前空間の定義などを行う。ここでは、jelly:antに登録されたURIに対してantという名前を割り当てている。jelly:antは、jellyタグライブラリのantタスクを実行するためのライブラリ。
<goal>プラグインのゴールを定義する。ゴールの名前はname属性に定義する。また、description属性にはゴールの説明を記述する。
<ant:echo>文字列を標準出力先に出力するためのantタスクを表すタグ。

 jellyタグライブラリは、mavenに標準でインストールされているため、mavenコマンドから実行する際には、特に何の設定もせずに使うことができます。

 では、mavenコマンドを使って、プラグインの作成、プラグインのインストール、プラグインの実行を行っていきます。

プラグインのインストールと実行

 まずは作成したプラグインを、配置できる形(jarファイル)にします。カレントディレクトリをプラグインルートに移動し、次のようにコマンドを入力してください。

プラグインの作成
> maven plugin
...
BUILD SUCCESSFUL
...

 ビルドが成功すると、「プラグインルート\target」ディレクトリ直下にプラグインのjarファイルが生成されます。

 次にプラグインのインストールを行います。次のようにコマンドを入力してください。

プラグインの作成
> maven plugin:install
...
BUILD SUCCESSFUL
...

 インストール作業は、先に生成されたファイルを「MAVEN_HOME\plugins」ディレクトリ直下に配置するだけですので、手動でも行えます。なお、plugin:installゴールを実行した場合、プラグインの作成も行われるので、前もってpluginゴールを実行してプラグインを作成しておく必要はありません。

 では、最後に今インストールされたプラグインを実行してみましょう。カレントディレクトリをプロジェクトルートに移動し、以下のようにmavenコマンドを実行してください。

プラグインの作成
> maven maven-sample-plugin:description
...
maven-sample-plugin:description:
    [echo] Sample Plugin for Maven
BUILD SUCCESSFUL
...

 プラグインの作成方法の説明は以上です。非常に簡単にmavenのプラグインを作成できることがお分かりいただけたのではないかと思います。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 渕 幸雄(フチ ユキオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5