前々回、Mojo 内からPOM ファイル内の要素(をモデル化したオブジェクト)を取得する方法を見ました。
今回は POM ファイル内ではなく、Maven2 内で動いているコンポーネントを取得する方法を見てみましょう。 ただし、取得の仕方は簡単ですが、どうやって使うのかはいまいちよく分かりません・・・
★取得できるコンポーネント★
取得できるコンポーネントは static final な java.lang.String フィールド「ROLE」が定義されているインターフェースです。 Maven2 の JavaDoc はこちら。
★コンポーネントの型への依存性★
まずは、取得したいコンポーネントの型(クラス)を使用できるようにしなければなりません。 これには、プラグインを作成しているプロジェクトの POM ファイルに、適当な依存性*1を付加します。
例えば、「org.apache.maven.plugin.PluginManager」というコンポーネントを取得するためには、それを含んでいるプロジェクト「maven-project」への依存性を POM ファイルへ付加します:
<project> ... <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-project</artifactId> <version>2.0.8</version> </dependency> </dependencies> </project>
★コンポーネントの取得方法★
Mojo 内での設定は、単に取得したいコンポーネントの型のフィールドを定義して、「@component アノテーション」を付加するだけです。 「PluginManager」というコンポーネントを取得するためには、
/** @component */ private PluginManager pm;
とします。