2

次のようなプロジェクト構造があります。

Parent Project
 - A
 - B
 - C
 - D (Parent to D.1-3)
   - D.1
   - D.2 
   - D.3
 -E

ABCE はコード プロジェクト (OSGi バンドル) で、単体テストも含まれています。D.1、D.2、D.3 は、jUnit ランナーを使用して開始する pax-exam を使用した統合テストです。

ABCE単体テストは並行して実行できます。D.1-3 は並行して実行できません。これは簡単です。親 pom ですべてを並行して実行するように Surefire に指示するだけで、D の pom ではすべてを一度に 1 つずつ実行するように確実に指示します。D.1-3 は親 pom として D を持っています。

さて、これで並列テストが実行されました。また、並列ビルドも本当に必要です。

Maven で -T 5 フラグを使用すると、複数のモジュールを並行して実行することになります。Surefire に関して言えば、これはそれぞれ独自のテストを並行して実行する Surefire の 5 つのインスタンスがあることを意味します。これでもいいです。

問題は、maven が D.1、D.2、D.3 を並行して実行することを決定する可能性があり、その後、私が何を確実に伝えても、それらのテストケースが並行して実行されることです。

D.pom 内の maven の -T フラグをオーバーライドする方法はありますか?

または、ビルドの一部を強制的にシリアル化する他の方法はありますか? D.1-3 をこのプロジェクトから移動し、常に -T 1 で実行される別のプロジェクトに移動する以外は。

4

2 に答える 2

0

モジュールのpomでsurefire.forkCountをオーバーライドするのが、より簡単な方法になる可能性があります。このようにして、特に問題のあるモジュールのみを連続して実行することで、並列ビルドと並列テスト実行の利点が得られます。

于 2015-07-31T16:29:54.583 に答える
0

見てください: maven呼び出しプラグイン

.properties ファイルの構成を介して、それ自体で Maven を起動できます。したがって、必要な -T 設定を使用してプロジェクト Dx を個別にビルドすることが可能です。

于 2013-09-06T13:09:13.940 に答える