web-dev-qa-db-ja.com

Maven -DskipTestsは無視されます

次の SureFire 設定でMavenプロジェクトを構築しています:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${version.maven-surefire-plugin}</version>
    <configuration>
        <includes>
            <include>**/*Test.Java</include>
        </includes>
    </configuration>
</plugin>

問題は、mvn clean install -DskipTests=trueでビルドすると、テストがまだ実行されていることです。何が問題なのでしょうか?

-DskipTestsMavenウェブサイト から)と-DskipTests=trueの両方を試しました。これは、「テストをスキップ」チェックボックスをオンにするとIntelliJ Ideaによって追加されます。

Maven settings.xmlは使用しません。

  • Mavenバージョン:2.2.1
  • Surefireプラグイン:2.3

[〜#〜] edit [〜#〜]SureFireプラグイン構成をコメント化すると、パラメーターは期待どおりに動作します。上記の構成の問題は何ですか?

28
NeplatnyUdaj

あなたがしたことはうまくいくはずです。これをさらにデバッグする方法:

  1. mvn help:effective-pomを実行して、Mavenが実行するPOM全体を確認します。 test(大文字と小文字を区別しない)を検索して、奇妙なものがあるかどうかを確認します。

  2. mvn test -Xを実行して、デバッグ出力を取得します。これにより、maven-surefire-pluginの構成に使用されるオプションが出力されます。出力をファイルにリダイレクトしてください!

    ログには、次のように表示されます

    [DEBUG] Configuring mojo 'org.Apache.maven.plugins:maven-surefire-plugin:2.15:test' with basic configurator -->
    

    そして、その下のいくつかの行:

    [DEBUG]   (s) runOrder = filesystem
    [DEBUG]   (s) skip = false
    [DEBUG]   (s) skipTests = false
    

    これらの値は、テストがスキップされないことを意味します。

  3. プラグインの最新バージョンを使用していますか? ここをチェック 。お使いのバージョンではこのオプションがサポートされていない可能性があります。

10
Aaron Digulla

Mavenは、テストをスキップするための2種類のパラメーターを知っています。

-Dmaven.test.skip=true 

または

-DskipTests=true 

surefire-plugin documentation は、まだ試したことのない最初のプラグインのみに言及しています。

29
Jack

そうではない -DskipTests=trueそれはただ-DskipTests surfireバージョン2.3を使用していることを考慮

だからあなたはそれを

mvn install -DskipTests
3
Raji

なぜ正しい答えがまだ投稿されていないのか分かりません。 SureFireの古いバージョンでは、テストをコンパイルするが実行しないフラグは-Dmaven.test.skip.exec

1
Chris

Surefireプラグインの次の構成を試してください

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${version.surefire.plugin}</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
0
Andrei Nicusan