前回は自作の mojo にゴール名を設定する仕方を見ました。 これによって、コマンド・プロンプトから自作のプラグインを実行できるようになりました。
しかし実際には、何らかのフェーズ(例えばコンパイルやインストールなど)が実行されたとき、それをトリガーとして自作のプラグインを実行したいということがよくあるかと思います。 これを行うには、前回よりももう少し設定が必要になります。
@phase アノテーション
自作の Mojo に「@phase アノテーション」を付加することで、何らかのフェーズ(の後)に処理を割り込ませることができます。 @phase の使い方は @goal と殆ど同じです。 ただし、@phase に続けるのは処理を割り込ませたいフェーズの名前です。
例として、前回の HelloMojo の処理を install フェーズ(の後)に割り込ませるように設定しましょう:
package org.sample; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; /** * My first plugin ! * * @goal sayhi * @phase install */ public class HelloMojo extends AbstractMojo{ public void execute()throws MojoExecutionException{ getLog().info("***** Hello, world ! *****"); } }
JavaDoc コメント「@phase install」を付け加えただけです。
プラグインを使用するプロジェクトでの設定
プラグインを使用するプロジェクト側では、/project/build/plugins 要素下に自作のプラグイン・プロジェクトの設定(groupId, artifactId など)を書き、 さらにその直下に executions/execution/goals/goal 要素を付加します。 <goal> 要素の子テキストは実行したいゴールの名前にします:
<?xml version="1.0"?> <project> ... <build> <plugins> <plugin> <groupId>org.sample</groupId> <artifactId>hello</artifactId> <executions> <execution> <goals> <goal>sayhi</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
実行方法
上記のように設定すると、通常のビルドを実行するだけで、自作のプラグイン・プロジェクトを実行することが出来ます:
mvn install
ちなみに、前回と同じように次のコマンド
mvn org.sample:hello:sayhi
を実行すると、このゴールの処理だけが実行されます*1。
@phase アノテーションを使わずに処理を割り込ませる
一応、Mojo に @phase 付加しなくても、プラグインを使用するプロジェクト側の設定だけによって上記と同じことができるので、ご紹〜介。 そのためには、<plugin> 要素下に <phase> 要素を付加して、その子テキストに処理を割り込ませたいフェーズ名を指定します:
<?xml version="1.0"?> <project> ... <build> <plugins> <plugin> <groupId>org.sample</groupId> <artifactId>hello</artifactId> <executions> <execution> <goals> <goal>sayhi</goal> </goals> <phase>install</phase> </execution> </executions> </plugin> </plugins> </build> </project>
実行の仕方は @phase を使用したときと同じです。

- 作者: Daniel J. Barrett,Richard E. Silverman,Robert G. Byrnes,小島肇,坂井順行,鹿田幸治,園田道夫,高橋基信,根津研介,宮本久仁男
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/22
- メディア: 大型本
- 購入: 2人 クリック: 79回
- この商品を含むブログ (47件) を見る