質問

Antを使用してカスタムMaven2プラグインを構築しました。カスタムAntプラグインが正常に完了した直後に、別のMavenプラグイン、特にCargo Maven2プラグインを呼び出したいと思います。ただし、Cargoプラグインを別の目標またはフェーズに添付したくありません。バッチスクリプトを作成せずに、それらを連続して実行する方法はありますか?カスタムAntプラグインからCargoプラグインを呼び出す必要はありますか?

役に立ちましたか?

解決

こちらのディスカッションをご覧ください:再:別のプラグインでプラグインを呼び出す? Maven開発者によると、これはプラグインが機能するはずの方法ではありません。

ただし、この興味深いコメントがあります:

  

Plugins / Mojosは、ライブラリの薄いラッパーである必要があります。ライブラリを直接使用したいでしょう。

CargoはMavenプラグインだけでなく、Java APIと Antタスク。だからあなたはおそらく:

  • Ant mojoからCargo Antタスクを呼び出します(プラグインのクラスパスにCargo JARが必要だと思います);

  • Ant mojoをJavaで書き換え、Cargo APIを呼び出します(Cargoプラグインのソースを確認したい)。

他のヒント

maven-ant-pluginが実行するAntスクリプトは、Mavenを実際には認識していません。このプラグインは、カスタムAntタスクとの後方互換性のために設計されています。あなたがそれを可能にする何らかのハックがあるかもしれませんが、私はあなたが望むことをするきれいな方法を考えることはできません。

Antの内部からMavenの2番目のインスタンスを実行することもできます。これは、純粋にCargoゴールを実行しますが、その場合、ロックされたファイルなどで問題が発生する可能性があります。それを行う方法は、Antスクリプトでタグを使用して" mvn"を呼び出すだけです。適切な目標を引数として実行可能。

最もクリーンな方法は、Cargoゴールをビルドのフェーズに単純にバインドし、Antの終了後に実行することです。このアプローチにはデメリットはありません-回避したい具体的な理由は実際には述べていません。

次の2つのMavenに興味があるかもしれません

GMavenプラグインを使用すると、groovyを使用してmavenプラグインを作成できます。これにより、 Ant Builder を使用してantに完全にアクセスできます。 Groovyでantスクリプトを書く簡単な方法。 このGroovyモジョでは、Mojoエグゼキューターを使用して任意のMavenモジョを呼び出すことができます。

いくつかのカスタムMavenプラグインでそれらを使用しましたが、mojoを記述および結合する簡単な方法は見つかりませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top