48

いくつかのモジュールを含む大規模なMavenプロジェクトがあります。1つのモジュールからJUnitテストを実行する場合は、すべてのモジュールを含むディレクトリで「mvn -Dtest =NameOfTesttest」を実行します。このコマンドを実行すると、Mavenは各モジュールを調べてコンパイルを試みます(既にコンパイルされていますが)。これには、多数のファイルのコピーが含まれ、テストの合計時間が長くなります。Mavenのsurefireプラグインの「test」コマンドは、テストまでのすべてのステップを実行しているようです。テストステップのみを実行し、ファイルのコンパイルとコピーの試行をすべて気にしない方法があるかどうか疑問に思いました。

テスト開始前の出力は次のとおりです。

[INFO] 
[INFO] --- build-helper-maven-plugin:1.5:add-test-source (add-test-source) @ module1 ---
[INFO] Test Source directory: <directory in module1 with some generated sources> added.
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ module1 ---
[debug] execute contextualize
[INFO] Copying 108 resources
[INFO] Copying 1113 resources
[INFO] Copying 1 resource
[INFO]

他のモジュールごとにこれを繰り返します。実際にテストを開始するまでに1、2分かかると言われています。事前にすべてのコンパイルを気にせずにテストを実行する方法を知っている人はいますか?他にご不明な点がございましたら、お気軽にお問い合わせください。

4

3 に答える 3

84

前のフェーズをすべて実行せずに、ライフサイクルのテストフェーズだけを実行したい場合は、テストフェーズにバインドされている目標を呼び出すこともできます。

mvn surefire:test

または、1つのテストだけを実行する場合

mvn -Dtest=NameOfTest surefire:test
于 2013-02-15T08:26:43.763 に答える
1

テストが存在するモジュール内からテストを実行するだけの何が問題になっていますか?そうすれば、Mavenはあなたが興味のない他のモジュールを構築しようとはしません。

于 2013-02-14T19:19:39.650 に答える
-5

cmd行からのテストのコンパイルをスキップしたいだけの場合は、を使用して-Dmaven.test.skip=trueください。

また、テストはコンパイルされませんmaven.test.skipが、に侵入したコンパイル済みテストは実行されることも指摘しておく必要があります。<testOutputDirectory>

skipmaven-resources-pluginのドキュメントに基づいて、maven.test.skip上記の引数を使用してテストリソースのコピーをスキップする必要があります。

テストリソースのコピーをバイパスするには、これを「true」に設定します。その使用は推奨されていませんが、場合によっては非常に便利です。ユーザープロパティはmaven.test.skipです。

于 2013-02-14T18:51:23.697 に答える