2012-05-02 14 views
2

surefireのようなプラグインには、プラグインの特定のゴールが実行されるJVMに渡される「argLine」設定パラメータがあります。私が理解しているように、デフォルトでは、Mavenプラグインはforkされ、別のJVMで実行されます(私が間違っていれば修正してください)。 私はVMの引数をMavenプラグインjibxに渡す方法を解明しようとしていますが、もっと簡単で宣言的な方法(Utilクラス経由)があるかどうかわかりません。確かに、これを処理していると思われるユーティリティクラスがbooterclientにありますが、機能はプラグイン全体で普遍的なようですね。したがって、Mojo/Plexusのサポートがあれば、たくさんの配管コードを書くことなく簡単に追加できますか?再度、私の理解が間違っている場合は私を修正してくださいJVMオプションをMavenプラグインに渡す

ありがとうございます!

答えて

0

実際のMavenプラグインクラスは、Mavenと同じJVMで実行されます。

Mavenプラグインが別のツールをラッピングしている場合、Mavenプラグインがプロセスをフォークするかどうかにかかわらず、Mavenプラグインの書き方によって異なります。

たとえば、Cobertura Maven Pluginは、Coberturaの処理をフォークします。このフォークには技術的な理由はありませんが、Coberturaの場合、JVMのフォークはCoberturaツール自体のGPLライセンスを回避することです。

あなたが気づいたとおり、Surefireプラグインは、通常、単体テストを実行するプロセスをフォークします。それは技術的にフォークする必要はありません(forkMode=neverを参照)。しかし、フォークを必要とするJVMのいくつかの部分の分離が貧弱であることには良い理由があります。システムプロパティはグローバルです。

質問のプラグインを見てくださいyou can see that it is just invoking the JIBX's main method directly。言い換えれば、JVMをまったくforkしていないということです。必要なJVMオプションがある場合、それらを指定するにはMAVEN_OPTS環境変数を使用する必要があります(Maven用のグローバルな副作用があり、指定することを忘れた場合、期待どおりに動作しません)。 )

これを修正すると、forkしたJVMのJVMオプションを受け入れてくれるプラグインへのパッチを提案するべきだと思います。

関連する問題