Чи існує простий спосіб не будувати тестові класи?
mvn clean install -Dmaven.test.skip=true
Чи існує простий спосіб не будувати тестові класи?
mvn clean install -Dmaven.test.skip=true
Відповіді:
Згідно з документацією щодо плагіна Maven Surefire, -Dmaven.test.skip
слід пропустити компіляцію та виконання тестів. На противагу цьому , -DskipTests
тільки пропускає тест виконання : тести з - як і раніше компілюється.
skipTests
просто пропускає виконання тестів і maven.text.skip
пропускає компіляцію та виконання тестів. Я завжди повинен шукати, який є який.
Щоб бути чітко зрозумілим:
skipTests
буде компілювати що- небудь у <testSourceDirectory>
, але не буде виконувати їх.
maven.test.skip
НЕ буде компілювати будь-які тести, але БУДЕ виконувати будь-які скомпільовані тести, які потрапили до <testOutputDirectory>
.
Отже, поведінка вищезазначених 2 протилежна. Просто хотів зазначити, що maven.test.skip
не пропускає компіляцію І виконання, якщо тестові файли розпаковуються / копіюються / і т.д. в <testOutputDirectory>
.
Крім того, залежно від того, яку версію Maven ви використовуєте, існує також maven.test.skip.exec=true
яка додатково пропускає виконання тесту, подібно до skipTests.
mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=true
буде компілювати тести (через перше виконання пакета), але не запускати їх у другій команді. Якщо target/test-classes
взяти стандартні каталоги, вони будуть містити всі тести згодом, але вони не були виконані.
Наприклад, запустіть фазу , яка не включає .test-compile
compile
mvn clean compile
Я знайшов обхід в іншому питанні , яке насправді замінює виконання плагіна, додавши наступний фрагмент у ваш 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>
Здається, це працює, але однозначно не відключає фазу, але відключає дії за замовчуванням, які плагін визначає на певній фазі.