58

作成したい複数の Mojo の共通ロジックを格納する Plexus コンポーネントを作成しました。localRepository私はMojo (およびテストケース) から and project のような情報を渡すことができました。

MavenSessionorMavenExecutionRequestを Mojo からパラメーターとして渡すことなく、コンポーネント内から取得する方法があるかどうか疑問に思っていました。コンポーネントが Maven Mojo から実行されることはわかっています。

この例では Maven 2 を使用しています。

4

1 に答える 1

1

あるとは思いませんし、良い考えだとも思いません。

私の理解では、あなたが達成しようとしているのは、いくつかのモジョに使用されるコモンズのようなコンポーネントを持つことです。これには、現在の Maven セッションを渡して、後で値を返すために使用する必要があります。

ただし、Maven の動作方法は、ほぼコンテナーのような環境でプラグインからゴールを実行することです。で定義されているように、各プラグインは特定のMaven Phase<executions />内で動作することが許可されています。これにより、Maven はビルド、テスト、チェック、デプロイなどの複雑さを分離できます。mvn clean install私の間違いでない限り、呼び出しは 2 つの別々の実行であり、1 つはclean ビルド ライフサイクルを実行し、その後にinstall.

MavenSessionしたがって、と後続MavenExecutionRequestの が前の呼び出しで使用されたのと同じインスタンスを表して いると想定するのは安全ではありません。clean別の呼び出しであり、そのロジックは新しいセッションで維持されるべきではありません。

したがって、私が本質的に言っていることは、共通の神経叢コンポーネントを持つことは、特にモジョ全体で一貫性を維持するための良い習慣ですが、適切なセッションを毎回提供することは正しい習慣 (ほぼioc ) であるということです。

それがあなたが探している答えであることを願っています。かなり長くなりますが、セッションを提供する必要がある理由を理解するには、次のように考えてMavenください。

于 2012-08-12T23:30:35.817 に答える