倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

プラグインを作ろう! (2) -- Mojo, AbstractMojo

前回は独自プラグインを作成するための Maven2 プロジェクト「Mojo プロジェクト」の作成・インストール・実行の手順を見ました。

今回からは、プラグインで行う処理を実装する仕方を見ていきます。 Java 以外の言語を用いて処理を実装することもできるそうですが、ここではとりあえず Java を用いた実装に限定します。

Mojo インターフェース


Maven2 のプラグインは1つ以上のゴールからなり、各ゴールの処理をそれぞれ1つの Mojo *1 オブジェクトが実行します。 要は、1つのゴールに対して1つの Mojo の実装を作成すればいいということです。

このクラスには以下の3つのメソッドが定義されています:

メソッド名 メソッド宣言 内容
execute() public void execute() ゴールの処理を実行する
getLog() public Log getLog() Log オブジェクトを取得する
setLog() public void setLog(Log) Log オブジェクトを設定する


Log オブジェクト」はログ出力(ゴールの実行中にコンソールにメッセージを出力するなどの処理)をする際に用います。 使い方等は次回以降。

AbstractMojo クラス


実際には、直接 Mojo を実装するクラスを作らず、それを実装した抽象クラス AbstractMojo クラスを拡張したクラスを作成します。 archetype プラグインを用いて mojo プロジェクトを作成した場合、自動的にこのクラスのサブクラス「MyMojo クラス」のテンプレートが作成されます(前回のフォルダ構造の図を参照)。

AbstractMojo クラスには

  • Mojo インターフェースに定義されている getLog(), setLog() メソッドの実装
  • getPluginContext(), setPluginContext() メソッド*2の実装

が定義されています。 結果として、AbstractMojo クラスを拡張した場合、Mojo クラスを作成するには「execute() メソッドを実装する」だけでいいことになります(JavaDoc アノテーションを付加するなどのコーディングも必要ですが)。

Apache Maven 2.0入門 Java・オープンソース・ビルドツール

Apache Maven 2.0入門 Java・オープンソース・ビルドツール

*1:Mojo は Maven plain Old Java Object の略だそうです。

*2:org.apache.maven.plugin.ContextEnabled インターフェースに定義されているメソッド。