2

Surefire のようなプラグインには、プラグインの特定の目標が実行される JVM に渡す「argLine」構成パラメーターがあることを知っています。私が理解しているように、デフォルトでは、maven プラグインはフォークされ、別の JVM で実行されます (間違っている場合は修正してください)。VM 引数を maven プラグインjibxに渡す方法を理解しようとしていますが、これを行うように構成できる簡単な/宣言的な方法 (または Util クラスを介して) があるかどうかはわかりません。確かに、booterclient にはこれを処理しているように見えるユーティリティ クラスがありますが、その機能はプラグイン間で共通のようですよね? したがって、大量の配管コードを書かずにこれを簡単に追加できる Mojo/Plexus のサポートがあるのではないかと考えています。繰り返しますが、私の理解が間違っている場合は修正してください

前もって感謝します!

4

1 に答える 1

0

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

Mavenプラグインが別のツールをラップしている場合、プロセスをフォークするかどうかは、Mavenプラグインがどのように作成されたかによって異なります。

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

お気づきのように、Surefireプラグインは通常、単体テストを実行するためのプロセスをフォークします。技術的にはフォークする必要はありませんが(を参照forkMode=never)、フォークを必要とするJVMの一部の分離が不十分なため、システムプロパティがグローバルであるなどの理由があります。

質問のプラグインを見ると、JIBXのmainメソッドを直接呼び出していることがわかります。つまり、JVMをまったくフォークしていません。必要なJVMオプションがある場合は、MAVEN_OPTS環境変数を使用してそれらを指定する必要があります(Mavenに対してグローバルであるという副作用があり、指定を忘れると、期待どおりに機能しません)

これを修正するには、フォークされたJVMのJVMオプションをフォークして受け入れるプラグインへのパッチを実際に提案する必要があると思います

于 2012-08-21T11:26:06.447 に答える