29

私はmavenプラグインに取り組んでいます。MOJO を実行するプロジェクトから POM 情報を取得する良い方法は何でしょうか?

たとえば、別の Maven プロジェクトで mojo を実行する場合、プロジェクト名またはその他のパラメーターを取得したいと考えています。

もう 1 つ、AbstractMojo.java クラスにコンテキスト MAP があり、プライベート Map pluginContext があります。私が間違っている場合、誰かが私を訂正できますか?

4

5 に答える 5

34

次のように宣言されたフィールドを使用して、現在の 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>
于 2012-05-15T21:32:19.873 に答える
22
@Component
private MavenProject project;

maven-plugin-annotationsから作成された新しい mojos のデフォルトであるnew を使用する場合も (より簡潔かつ直感的に)機能しますmaven-archetype-plugin

編集(@bmargulies に感謝): @Component3.2 の時点での Javadoc は、それを for に使用することを提案していますがMavenProject、明らかにそれは非推奨であり、提案は 3.3 の時点で削除されています。(3.3の時点で)によって提案されたイディオムは次のようなものです(両方とも機能するようです)maven-plugin-tools-annotations

@Parameter(defaultValue="${project}", readonly=true, required=true)
private MavenProject project;
于 2014-03-11T20:53:41.810 に答える
15

現在推奨される構文は次のとおりです。

@Parameter(defaultValue = "${project}", required = true, readonly = true)
MavenProject project;

maven-projectプラグインの pom に依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-project</artifactId>
    <version>2.0.6</version>
</dependency>

(すでにこの情報を提供してくれた他の人に感謝します。この回答はそれらを1か所にまとめたものです。)

于 2015-08-06T15:51:15.890 に答える