87

一部のモジュールで1つを除くすべてのテストをスキップするために、コマンドライン引数を提供する方法はありますか?したがって、別のテストを実行する必要があるたびにpom.xmlを変更する必要はありませんか?

たとえば、TeamCityでビルド構成を作成し、一部のモジュールで単一のテストのみを実行するためのコマンドライン引数を提供したいとします。次回はそれを変更して別のテストを実行する必要があります。

おそらく、CIの使用方法ではないかもしれませんが、それでもなおです。

4

4 に答える 4

110

確実に単一のテストを実行することについてのドキュメントを読んだと思いますか?彼らがあなたに教えていないのは、サブモジュールでそれを行う方法です:

mvn test -Dtest=testname -pl subproject

subprojectそのテストを含むプロジェクトはどこにありますか。mvnのマニュアルページから:

-pl、--projects argすべてのプロジェクトの代わりに、ビルドする指定されたリアクタープロジェクトのコンマ区切りリスト。プロジェクトは、[groupId]:artifactIdまたはその相対パスで指定できます。

于 2013-05-03T01:38:09.127 に答える
44

構築される他のサブモジュールに依存するプロジェクトについては、私が見る他の答えは完全ではありません。1つのオプションはmvn install、必要なjarをインストールするために実行することです~/.m2/...が、そのオプションはあまり「クリーン」ではありません。

次のコマンドは、サブモジュールをビルドし、指定されたテストクラスのみを実行します。これは、親モジュールレベルで実行されます。また、サブモジュール名を指定する必要はありません。

mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am

余談ですが、これも可能mvn clean test -Dfa.....です。cleanテストを実行するときは常に実行する習慣があります。

参照..
-am他のすべてのサブモジュールを作成します。
-DfailIfNoTests=false他のモジュールでテストを実行するつもりはないので、プロセス全体が失敗することはありません。すでにすべてを構築している
-plので、オプションは必要ありません-am

于 2017-11-26T06:03:45.130 に答える
14

テストするモジュールが他のプロジェクトに依存している場合、ソリューションは次のようにコマンドを変更することで機能します。

mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject
于 2015-12-12T13:47:48.050 に答える
0

FWIW、マルチモジュールプロジェクトがある場合は、親ディレクトリでこのコマンドを使用してすべてのテストを実行できます。

mvn test -pl subproject

また、subprojectの名前は、通常は。の形式で次のコマンドを実行することで見つけることができますgroup-id:artifact-id

mvn help:active-profiles
于 2022-02-19T22:16:41.413 に答える