Maven-他の構成でプラグインを実行するためにカスタムフェーズを追加する
質問
1つのMavenプロジェクトに2つの統合テストがあります - 自動テストと手動テスト。手動テストはほとんどありませんが退屈です - 彼らはサーバーのプラグなどを引く必要があります。私は手動テストのために別の目標を作成したいので、私は次のようなものを実行できます mvn manualtests
手動テストを実行します。通常のMavenビルドを実行するだけの場合 mvn install
または、自動テストを実行する必要があります。
私はすでに手動テストをtestngアノテーションで注釈しました @Test(groups="manual"
. 。目標は、SureFireプラグインの2つの構成、1つはビルドのテストフェーズにバインドされている自動テストを実行し、もう1つは別のカスタムフェーズにバインドされている手動テストを実行することです。 manualtests
. 。プラグインの実行を存在しないフェーズ(つまり、Mavenによって定義されていない)にバインドすることは不可能なようです。あなた自身のフェーズを定義することはできませんか?
解決
簡単ではありませんが、それは可能です。最初のステップ:デフォルトでそれがどのように行われるかを見てください。
この依存関係を使用します:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>${maven.version}</version>
</dependency>
ソースを取得し、Meta-INF/Plexus内のComponents.xmlをご覧ください。そこでは、デフォルトフェーズとデフォルトのライフサイクル /フェーズバインディングの両方が定義されています。
これらのデフォルトフェーズをオーバーライドするプラグインを作成します(独自のコンポーネントでXML) 拡張機能として定義します
他のヒント
そのためにプロファイルを使用できるかもしれません:http://maven.apache.org/guides/introduction/introduction-to-profiles.html