Maven -DskipTests игнорируется - программирование
Подтвердить что ты не робот

Maven -DskipTests игнорируется

Я создаю проект Maven со следующей конфигурацией SureFire:

<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, тесты все еще выполняются. В чем может быть проблема?

Я попробовал как -DskipTests (который находится на веб-сайте Maven), так и -DskipTests=true, который добавлен IntelliJ Idea, когда я устанавливаю флажок "пропустить тесты".

Я не использую Maven settings.xml.

  • Версия Maven: 2.2.1
  • Плагин Surefire: 2.3

ИЗМЕНИТЬ Если я закомментирую конфигурацию плагина SureFire, параметр ведет себя так, как я ожидаю. В чем проблема с конфигурацией выше?

4b9b3361

Ответ 1

То, что вы сделали, должно работать. Как отладить это дальше:

  • Запустите mvn help:effective-pom, чтобы увидеть весь POM, который выполнит Maven. Найдите его для test (без учета регистра), чтобы увидеть, есть ли что-то нечетное.

  • Запустите 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
    

    Эти значения означают, что тесты не пропускаются.

  • Используете ли вы последнюю версию плагина? Проверьте здесь. Возможно, этот вариант не поддерживается для вашей версии.

Ответ 2

Maven знает два типа параметров для пропуска тестов:

-Dmaven.test.skip=true 

или же

-DskipTests=true 

В документации по плагину surefire упоминается только первый, который вы еще не пробовали.

Ответ 3

Я не уверен, почему правильный ответ еще не опубликован. В более старых версиях SureFire флаг для компиляции тестов, но не запускаемых, это -Dmaven.test.skip.exec.

Ответ 4

Попробуйте следующую конфигурацию для вашего плагина surefire

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

Ответ 5

это не -DskipTests=true это просто -DskipTests учитывая, что вы используете версию 2.3 для серфинга

так вы запускаете это как

mvn install -DskipTests