私の問題は、アーティファクトをユーザー指定の場所にデプロイするための Maven プラグインを作成したことです。私は今、このデプロイされたアーティファクトを使用する別の Maven プラグインを作成し、いくつか変更して再度圧縮しようとしています。最初のプラグインを使用して、それがデプロイされた場所に関する情報を取得するように、2 番目のプラグインを作成したいと考えています。最初のプラグインからこの情報にアクセスする方法がわかりません。
2 に答える
@Barendに同意します。展開する前に変更を加える余裕があれば、それが最善の戦略になる可能性があります。
それができない場合は、Mavenリリースプラグインのようなプラグインの戦略に従うことができます。Mavenリリースプラグインは2つのフェーズで実行され、2回目の実行では最初の実行の出力が必要です。彼らは、タグ名、SNAPSHOTバージョン名などの情報を含むプロジェクトディレクトリに一時プロパティファイルを保持することによってそれを管理します。
プラグインでも同じアプローチを使用できます。プラグインは一種のトランザクションであり、他の目標が実行される前に実行されることを期待していることを覚えておいてください。
最も簡単な回避策は、プラグインの実行順序を逆にすることだと私には思えます。
最初にプラグイン B を実行し、下の既知の場所を使用しtarget/
てアーティファクトを変更し、次にプラグイン A を実行して、変更されたアーティファクトを構成された場所にデプロイします。
それができない場合は、構成値を単純に複製することをお勧めします (両方のプラグインに<configuration>
要素内の新しい場所が通知されるようにします)。これにより、両方のプラグインが独立した状態に保たれます。これは、Maven が想定しているものです。
最後のオプションは、プラグイン B に POM 全体を解析させ、プラグイン A の<configuration>
要素から情報を抽出させることですが、これは本当にお勧めできません。このようにすると、2 つのプラグインは非常に密接に絡み合っているため、実際には 1 つのプラグインにすぎません。これは貧弱な設計であり、最小の驚きの原則に違反しており、後で厄介な構成の問題を引き起こす可能性があります。