2011-07-02 8 views
6

注:このスレッドでは、プラグインを使用せずにカスタムMojoを作成しています。Maven Plugin/Mojoを書く:目標をどのようにして他の目標の実行を強制するのですか?

私はMavenに対してtesting pluginを維持しています。残念ながら、ほぼ1年前から、私はこの未知の未知のものを残してしまいました。ユーザーのシンプルな構成を可能にするために、対処方法を本当に知りたいと思います。

のは、我々はプラグインに2つの目標を持っているとしましょう:

  • prepare(フェーズ:生成-源)
  • do(相:コンパイル)

私はdoモジョを設定したいですビルドの初期段階でprepareを実行する必要があります。しかし、descriptor documentationの中には何も示唆していません。

ユーザーはおそらくprepareのポイントを気にしない、または理解していない可能性があります。そのため、POMで指定する必要はありません。もちろん、私はdoから直接Mojoを実行することができますが、prepareの目標は、意図したよりも後の段階で実行されます。

は(私は custom lifecyclesに見えたが、それはすでにのPOMで prepare目標を持っている誰もが、それは doを実行しているときに2回実行されますように見えます。)あなたは、以下の(から取られたようなものを持っている可能性が

答えて

3

コンパイラモジョ):

/** 
* @author <a href="mailto:[email protected]">Jason van Zyl </a> 
* @version $Id: CompilerMojo.java 941498 2010-05-05 21:24:11Z krosenvold $ 
* @since 2.0 
* @goal compile 
* @phase compile 
* @threadSafe 
* @requiresDependencyResolution compile 
*/ 

これをクラスに設定すると、コンパイルフェーズ(この例では)中に実行されます。コンパイルフェーズでは、すべての前のフェーズが最初に実行されている必要があります(validate, generate-sources, process-sources, generate-resources, process-resources ...)。

基本的には、必要なもの(または同じもの)の後に相を選んでください。それが機能するはずです。

+0

これは、 'do' Mojoがデフォルトでコンパイルフェーズにバインドされ、' compile'という名前がゴールとして指定されるように指定する方法ですが、残念ながら私は「ああ」と言って、最初に実行されました "。現時点では、唯一の答えはカスタムライフサイクルです...私は働いていますが、私はまだ好きであるかどうかはわかりません。 –

+0

興味深い。 irc.codehaus.orgで#maven IRCチャンネルを試してみることもできます。おそらく、そこにいる人の中には、より良い提案があるだろう。 – carlspring

+0

なぜdownvote?はい、これは古いノンアノテーションベースの方法ですが、それでも有効です。 – carlspring

関連する問題