1

デフォルトのMavenプロジェクトがあります:

  • / src / main / java
  • / src / test / java(* Test.javaを含む)。

「mvncompile」を実行すると、mavenは/ src / test/javaの下のtestClassesもコンパイルしようとします。JUnitなどの一部の依存関係は「テスト」スコープの下にあるため、これは失敗します。たとえば、JUnitのスコープを「提供」に変更すると、すべてが正常に機能します。

コンパイル時にMavenがtestClassesをコンパイルしないようにするにはどうすればよいですか?私の理解では、Mavenは「testcompile」を実行するときにのみこのファイルをコンパイルすることを期待しています。

私はMaven2.2.1を使用しています

4

4 に答える 4

1

JUnitのスコープとは何の関係もないと思います。通常、JUnitのスコープをtest(ではなくprovided)に設定し、すべてが正常に機能します。

src/test/javaMavenコンパイラプラグインのtestCompileゴールによってコンパイルされます。ただし、その目標を明示的に実行する必要はありません。Mavenのライフサイクルに関するトピックをご覧ください。たとえば、maven installを実行すると、暗黙的に多くのフェーズ(コンパイル、コンパイルテスト、リソースの生成など)が実行され、それらの多くはデフォルトのプラグインの目標に制限されます。

テストソースのビルドを回避したい場合は、Mavenコンパイラプラグインの使用ページから、compiler:testCompile設定してテストをオフにするとスキップされますmaven.test.skip=true

したがって、単体テストの準備がまだ整っていない場合は、-Dmaven.test.skip=trueパラメーターを使用してMavenでビルドするだけです。

付け加えると、これは開発中に「ユニットテストの失敗」が正常であると想定するのは絶対に良い習慣ではありません。

于 2012-10-22T10:22:46.890 に答える
0

テストをスキップするだけでなく、テストをコンパイルするmaven-surefire-pluginのスキップパラメーターを使用するだけです。

于 2012-10-22T10:21:32.193 に答える
0

The pom.xml had defined "sourceDirectory" incorrectly. Removing it fixed the issue

于 2012-10-22T13:26:09.880 に答える
0

Instead of command "maven clean compile" , use "mvn -B -Dmaven.test.skip=true clean compile". This parameter skips test.

于 2012-10-22T13:49:39.710 に答える