自作Mavenプラグインにヘルプを付けよう

Maven 使ってチーム開発していると、ビルドプロセスで独自の処理が必要になって、プラグインを自作する機会がちょいちょいあります。

ただ、自作したプラグインって、ちょっと使っていないと使い方を忘れることがよくあります。公開されているプラグインだったら、サイトを見に行けばいいんですけど、自作の場合は面倒なので準備しないことが多い。

サイトがなくてもコマンドで確認することはできて、例えば、tomcat プラグインだったらこんな感じ。

$ mvn tomcat:help
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'tomcat'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [tomcat:help] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [tomcat:help {execution: default-cli}]
[INFO] org.codehaus.mojo:tomcat-maven-plugin:1.1

Tomcat Maven Plugin
  The Tomcat Maven Plugin provides goals to manipulate WAR projects within the
  Tomcat servlet container.

This plugin has 19 goals:

tomcat:deploy
  Deploy a WAR to Tomcat.

tomcat:deploy-only
  Deploy a WAR to Tomcat witjout forking the package lifecycle

tomcat:exploded
  Deploy an exploded WAR to Tomcat.
…

 でも、これって自作プラグインだと有効になってない場合が多い。

mvn help:describe -Dplugin=プラグイン名 とか長いコマンド打てば自作プラグインでも見れたりするんですけど、このコマンドを覚えるのが面倒。

じゃあ、どうすればいいかと言うと、HelpMojo を作りましょう。ただ、HelpMojo を自分で実装するのはバカバカしいですね(help:describe で見れるのに)。そこで、便利なプラグインがちゃんとあります。

それは Maven Plugin Plugin

使い方は超簡単。自作プラグインの pom.xml にプラグインを追加するだけ。

http://maven.apache.org/plugins/maven-plugin-plugin/examples/generate-help.html

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-plugin-plugin</artifactId>
        <version>2.9</version>
        <executions>
          <execution>
            <id>generated-helpmojo</id>
            <goals>
              <goal>helpmojo</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  ...
  </build>
  ...
</project>

これで、使い方をわからなくなっても、mvn プラグイン名:help で使い方を簡単に確認することができますね。