Мейвен - Пропустити будівельні тестові класи


80

Чи існує простий спосіб не будувати тестові класи?

mvn clean install -Dmaven.test.skip=true

3
пропустити компіляцію чи пропустити виконання?
Божо

Мені потрібно бігти на пристані, не складаючи тестових класів.

Відповіді:


134

Згідно з документацією щодо плагіна Maven Surefire, -Dmaven.test.skip слід пропустити компіляцію та виконання тестів. На противагу цьому , -DskipTestsтільки пропускає тест виконання : тести з - як і раніше компілюється.


28
+1 Однак я ненавиджу імена. Для мене абсолютно не очевидно, чому skipTestsпросто пропускає виконання тестів і maven.text.skipпропускає компіляцію та виконання тестів. Я завжди повинен шукати, який є який.
Йоахім Зауер,

18

Щоб бути чітко зрозумілим:

skipTests буде компілювати що- небудь у <testSourceDirectory>, але не буде виконувати їх.

maven.test.skipНЕ буде компілювати будь-які тести, але БУДЕ виконувати будь-які скомпільовані тести, які потрапили до <testOutputDirectory>.

Отже, поведінка вищезазначених 2 протилежна. Просто хотів зазначити, що maven.test.skipне пропускає компіляцію І виконання, якщо тестові файли розпаковуються / копіюються / і т.д. в <testOutputDirectory>.

Крім того, залежно від того, яку версію Maven ви використовуєте, існує також maven.test.skip.exec=trueяка додатково пропускає виконання тесту, подібно до skipTests.


3
На жаль, це неправда, принаймні у maven 3.0.5 та maven-compiler-plugin 3.5.1. Ви можете перевірити його в кожному проекті, що містить тести: mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=trueбуде компілювати тести (через перше виконання пакета), але не запускати їх у другій команді. Якщо target/test-classesвзяти стандартні каталоги, вони будуть містити всі тести згодом, але вони не були виконані.
Девід Георг Райхельт

Це правильна відповідь, і її слід прийняти як таку
Артем


8

Я не фахівець у Maven, але те, що я використовую у своєму поточному проекті:

mvn clean install -DskipTests=true

Залежно від випадку використання використовуйте:

mvn compile -DskipTests=true

може працювати і для вас.


0

Я знайшов обхід в іншому питанні , яке насправді замінює виконання плагіна, додавши наступний фрагмент у ваш pom.xml за замовчуванням:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <executions>
        <execution>
          <id>default-testCompile</id>
          <phase>none</phase>
        </execution>
      </executions>
   </plugin>
  </plugins>
</build>

Здається, це працює, але однозначно не відключає фазу, але відключає дії за замовчуванням, які плагін визначає на певній фазі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.