2012-05-15 11 views
21

私はMavenプラグインを開発中です。 MOJOを実行するプロジェクトからPOM情報を取得するにはどうすればよいでしょうか?Java Maven MOJO - プロジェクトから情報を取得するPOM

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

さらに、AbstractMojo.javaクラスにコンテキストMAPがあります。プライベートマップpluginContextがあります。私が間違っていると誰かが私を修正できますか?これはmojos間で情報を渡すために使用されると思われますか?

+1

この情報にアクセスする必要がある場所と必要なものを明確に指定する必要があります。プロジェクト情報はデフォルトでpomで利用可能です –

+1

私は常にプラグインの作成との関係で尋ねる最初の質問は何ですか?あなたはプラグインを書く必要がありますか?さらに、他のプラグイン、例えば、maven-assembly-plugin、maven-javadoc-pluginなどを見てください。 – khmarbaise

+0

あなたのヒントに感謝します – Xeperis

答えて

33

あなたはフィールドであなたのモジョに、現在のMavenプロジェクトを注入することができますが、このように宣言:

/** 
* @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> 
+1

maven 3.0.3で動作します。依存関係を追加してプロジェクトを挿入してください! –

+0

私はネット上の他の場所でこの回答を見つけたと思いますが、以前は知られていなかった(プロジェクトに)依存関係を追加して注入されたという事実が混乱しました。これは完全に、おかげでそれをクリアします。 –

18
@Component 
private MavenProject project; 

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

EDIT(@bmarguliesのおかげで):3.2として@Component JavadocはMavenProjectのためにそれを使用することを提案するが、明らかにそれが推奨されておらず、提案が3.3のように滴下します。 (3.3のような)maven-plugin-tools-annotationsによってidiom suggestedはこのような何か(の両方が動作するように見える)です:

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

これは推奨されていません。 – bmargulies

+0

OK; (新しいAPIを使用しているプラ​​グインでは)代わりに推奨されるものは何ですか? –

+2

@JörnHorstmannの答えに相当するアノテーション。 – bmargulies

7

の好適な構文は以下のようになります。

@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> 

(すでにこの情報を供給している他の人のおかげで、この答えは、一つの場所でそれらを組み合わせたものです。。)

+2

@Parameterアノテーションの場合は、maven-plugin-annotationsアーティファクトを追加したいかもしれません。 –

関連する問題