Help us understand the problem. What is going on with this article?

Maven で Plugin の usage を確認する

More than 5 years have passed since last update.

普段 Maven の山のようにある Plugin の使い方がわからないときに、ググって解決してたのですが、よろしくないなと思ったので usage を出す方法を調べました。

Maven Help Plugin の describe goal を使う

例えば Exec Maven Plugin の usage を見たい場合は以下のようになります。

console
$ mvn help:describe -Dplugin=exec
Name: Exec Maven Plugin
Description: A plugin to allow execution of system and Java programs
Group Id: org.codehaus.mojo
Artifact Id: exec-maven-plugin
Version: 1.4.0
Goal Prefix: exec

This plugin has 3 goals:

exec:exec
  Description: A Plugin for executing external programs.

exec:help
  Description: Display help information on exec-maven-plugin.
    Call mvn exec:help -Ddetail=true -Dgoal=<goal-name> to display parameter
    details.

exec:java
  Description: Executes the supplied java class in the current VM with the
    enclosing project's dependencies as classpath.

For more information, run 'mvn help:describe [...] -Ddetail'

help も plugin なのが maven エコシステム流なのですね。

なお、出力の末尾にも書いてありますが -Ddetail で詳細情報(Plugin 固有のJava システムプロパティなど)が得られます。

Exec Maven Plugin の全貌ではなく mvn exec:java だけが知りたいんだ!という場合は -Dgoal で goal 名を指定します。

console
$ mvn help:describe -Dplugin=exec -Dgoal=java
exec:java
  Description: Executes the supplied java class in the current VM with the
    enclosing project's dependencies as classpath.

For more information, run 'mvn help:describe [...] -Ddetail'

-Dplugin, -Dgoal の代わりに -Dcmd でまとめて書くこともできます。

console
$ mvn help:describe -Dcmd=exec:java

help goal

ちょっとこれだと覚えるのが大変そう、と思っていましたが、最近の Maven Plugin は help goal を生成するそうなので、こちらを使うとシンプルに書けるのでした。

console
$ mvn exec:help

もちろん、-Ddetailも、-Dgoal も使えます。

console
$ mvn exec:help -Dgoal=java

mvn help:describe -Dcmd=exec:java とさして変わらない長さになってしまった気がしますが忘れましょう。

phase 名で実行される plugin を知りたい

これで万全、と思ったのですが、まだ困るケースがありました。
Maven は mvn testmvn compile のように mvn <plugin>:<goal> の形式ではなく、mvn <phase> の形式でも実行できます。
mvn test とすると mvn surefire:test が動くのですが、この関連はちょっと覚えるのが難しいですね。ググると公式のドキュメントに対応表がありました。これを覚えるか紐解くかしないといけないのは大変だと思ったのですが、mvn コマンドですぱっと調べる良い方法がわかりませんでした。
mvn help:effective-pom を使えば phase と goal の関係がわかるといえばわかるのですが、XML を人間が読むのはちょっとキツいので今後の課題としたいところです。

所感

ちょっと Maven の usage 見たいなと思っただけで、ここまで連れて行かれる JavaWorld の広大さを久々に感じました1


  1. その前はちょっとログファイルでも作るかと思ったときに広大な世界を感じました。 

youhei
Yet Another #baystars Addict.
http://youhei.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした