Maven はどうやって gf:run のような gf で始まるゴールを理解しているのですか?

Kedar より:

言いかえると、 gf:run は実際のところどのように実行されるのでしょう?

ここで何が行われているのかを知るには、Maven についてプラグインとの関連で理解する必要があります。 Maven というのは、そもそも*プラグインを実行するためのフレームワーク*なのです。 Maven はプラグインを検出し、それらに関連付けられた*ゴール*を実行します。プラグインは通常、 Mojo と呼ばれるコンポーネントとして実装されています。
Maven プラグインのリポジトリ(英語) に列挙されているプラグインをごらん頂けば、プラグイン大きく以下のように分類できるのが分かるでしょう:

  • 一般的なタスク用
  • Eclipse などのオープンソースプロジェクト用

(余談ながら、我々は GlassFish 用の Maven プラグイン作成に着手すべきですね。現在のところ、これに関する明確なプランはありません。ざっくりとした見通しではありますが、 GlassFish Maven プラグインができれば、それで ANT のタスクを置き換えることができるのではないかと思います。これは我々にとっても良い機会です)

ともあれ、いくつかのプラグインは既に作成され、 v3 のソースの "build" モジュール内に含まれています。こうしたプラグインについて理解するには、次のようなコマンドを実行します。 work-space 内にあるプラグインなら、どれでも同じ手法が使えます。

mvn -o help:describe -DgroupId=org.glassfish.build -DartifactId=maven-glassfish-plugin -Dfull=true

コマンドを実行すると、次のような出力を確認できます:

...
===============================================
Goal: 'assemble'
===============================================
Description:
Creates a glassfish distribution image.

Implementation: com.sun.enterprise.build.DistributionAssemblyMojo
Language: java
Bound to Phase: package

...

上記の出力は、ビルドの package フェーズ において assemble というゴール を達成するため、 Maven のフレームワークがこのプラグインおよび関連するMojoを選択し、実行したことをあらわしています。


日本語翻訳: Kana

英文 (翻訳したバージョン: 4)