Ant を使用してカスタム Maven2 プラグインを作成しました。カスタム Ant プラグインが正常に完了した直後に、別の Maven プラグイン、特に Cargo Maven2 プラグインを呼び出したいと思います。ただし、Cargo プラグインを別の目標またはフェーズに接続したくありません。バッチ スクリプトを記述せずに連続して実行する方法はありますか? Custom Ant プラグインを Cargo プラグインに呼び出す方法はありますか?
3 に答える
このディスカッションを参照してください: Re: 別のプラグインでプラグインを呼び出していますか? Maven 開発者によると、これはプラグインが動作するはずの方法ではありません。
ただし、次の興味深いコメントがあります。
プラグイン/Mojos は、ライブラリの薄いラッパーであるべきです。ライブラリを直接使用したいでしょう。
Cargo は Maven プラグインであるだけでなく、Java API とAnt タスクも備えています。したがって、おそらく次のことができます。
Ant mojo から Cargo Ant タスクを呼び出します (プラグインのクラスパスに Cargo JAR が必要になるだけだと思います)。
Ant mojo を Java で書き直して、Cargo API を呼び出します (Cargo プラグインのソースを参照してください)。
maven-ant-plugin が実行する Ant スクリプトは、Maven 自体を実際には認識していません。このプラグインは、カスタム Ant タスクとの後方互換性のために設計されています。あなたがそれを可能にするある種のハックがあるかもしれませんが、私はあなたが望むことをするためのきれいな方法を考えることはできません.
純粋に Cargo ゴールを実行する Ant 内から Maven の 2 番目のインスタンスを実行することも可能ですが、その場合、ロックされたファイルなどの問題が発生する可能性があります。これを行う方法は、Ant スクリプトでタグを使用し、適切な目標を引数として「mvn」実行可能ファイルを呼び出すだけです。
最もクリーンな方法は、単純に Cargo ゴールをビルドのフェーズにバインドし、Ant の終了後にそれを実行することです。私はそのアプローチに不利な点はないと思います - あなたはそれを避けたい特定の理由を実際に述べていません.
次の 2 つの Maven に興味があるかもしれません
GMaven プラグインを使用すると、groovy を使用して Maven プラグインを作成できます。これにより、 Ant Builderを使用して ant に完全にアクセスできるようになります。これは、Groovy で ant スクリプトを作成するための非常に簡単な方法です。次に、この Groovy mojo で、Mojo Executor を使用して任意の maven mojo を呼び出すことができます。
私はいくつかのカスタム Maven プラグインでそれらを使用しましたが、mojo を作成して組み合わせる簡単な方法を見つけられませんでした。