как отключить компиляцию модулей при пропуске тестов

#maven-2 #build

#maven-2 #сборка

Вопрос:

В нашей «большой сборке» (более 40 модулей) у нас есть несколько модулей, которые содержат только тесты.

Когда я передаю -DskiptTests в mvn, тесты не выполняются.

Но они компилируются, что занимает до минуты времени сборки.

Как я могу выборочно отключить такие модули, когда установлена опция skipTests?

Ответ №1:

Вам пришлось бы организовать свой корневой pom таким образом, чтобы тестовые модули активировались через профиль, и вместо того, чтобы использовать -Dmaven.test.skip для включения use -P!testProfile , деактивировать их и, следовательно, пропускать.

Другая мысль заключается в том, что вы могли бы просто сделать:

 <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <skip>${maven.test.skip}</skip>
        </configuration>
    </plugin>
</plugins>
  

На самом деле я этого не пробовал … теоретически это должно сработать. Кажется, я помню, что <skip> конфигурация доступна для всех плагинов.

Ответ №2:

Просто чтобы прояснить точку зрения Гарета Дэвида:

  • При запуске mvn ... -DskipTests пропускается только выполнение тестов. Это то же самое поведение, если вы запускаете mvn ... -Dtest=notest
  • Когда вы запускаете mvn ... -Dmaven.skip.test=true , как выполнение теста, так и компиляция пропускаются.

Итак, второй команды достаточно, без каких-либо изменений вашего pom.xml файла.

(исходный код)

Комментарии:

1. @Bastl Какую версию Maven вы используете?