私はMavenプラグインに取り組んでいます。 MOJOを実行するプロジェクトからPOM情報を取得するための良い方法は何でしょうか。
たとえば、別のMavenプロジェクトでmojoを実行する場合、プロジェクト名またはその他のパラメーターを取得したいと思います。
そしてもう1つ、AbstractMojo.JavaクラスにコンテキストMAPがあり、プライベートMap pluginContextがあります。私が間違っている場合、誰かが私を修正できますが、これはmojo間で情報を渡すために使用されると思われますか?
次のように宣言されたフィールドを使用して、現在のMavenプロジェクトをmojoに注入できます。
_/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
MavenProject project;
_
プロジェクト名は、project.getName()
を呼び出すだけで利用できます。このAPIを使用するには、依存関係として_maven-project
_アーティファクトを追加する必要があります。
_<dependency>
<groupId>org.Apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.6</version>
</dependency>
_
@Component
private MavenProject project;
maven-plugin-annotations
から作成された新しいmojoのデフォルトである新しいmaven-archetype-plugin
を使用する場合にも、(より簡潔かつ直感的に)機能します。
[〜#〜] edit [〜#〜](@ bmarguliesに感謝):3.2の時点での@Component
Javadocはそれを使用することを提案していますがMavenProject
の場合、これは明らかに非推奨であり、提案は3.3で削除されます。 イディオム提案 by maven-plugin-tools-annotations
(3.3以降)は次のようなものです(どちらも機能しているようです):
@Parameter(defaultValue="${project}", readonly=true, required=true)
private MavenProject project;
推奨される構文は次のとおりです。
@Parameter(defaultValue = "${project}", required = true, readonly = true)
MavenProject project;
プラグインのpomにmaven-project
の依存関係を追加する必要があります。
<dependency>
<groupId>org.Apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.6</version>
</dependency>
(すでにこの情報を提供してくれた他の人に感謝します。この回答はそれらを1か所にまとめています。)