Как избежать запуска «test» снова при запуске «install» - PullRequest
0 голосов
/ 05 ноября 2019

В нашем проекте maven у нас есть пара целей: clean, test и install.

Если я запускаю mvn clean install, он запускает test, что является обязательным условием дляinstall. Если после этого я снова запускаю mvn clean install без каких-либо изменений кода, он снова запускает test.

Как мне сделать его достаточно умным, чтобы избежать ненужного запуска test во второй раз?

Ответы [ 4 ]

3 голосов
/ 05 ноября 2019

Вы можете использовать два полезных свойства для манипулирования тестовыми примерами.

# Skip test cases compilation
mvn -Dmaven.test.skip install

# Compile test cases but not execute them
mvn -DskipTests install

Однако, если вы хотите, чтобы maven запускал только те тесты, которые были изменены, вы не сможете этого сделать. Это одна из очень удобных вещей, которые Gradle предоставляет для Maven.

Вы можете взглянуть на этот сайт: https://dzone.com/articles/reducing-test-times-only, где парень создал документ, хотя это обходной путь (не предусмотреноmaven), так что я думаю, что вы хотите умные вещи Gradle для вашего дела.

1 голос
/ 05 ноября 2019

Каждая фаза Maven запускается на каждой последующей фазе Maven жизненного цикла, кроме clean. т. е. test выполняет проверку, компиляцию и тестирование.

Таким образом, поскольку install уже запускает каждый последующий этап, включая test, не беспокойтесь о вызове mvn test явно. Если тест не пройден, он не будет продолжен.

tl; dr: то, что вы хотите

mvn clean install
1 голос
/ 05 ноября 2019

Вы можете указать maven включить / исключить тест с помощью аргументов:

# Exclude one test class, by using the explanation mark (!)
mvn clean install -Dtest=!LegacyTest
# Exclude one test method
mvn clean install -Dtest=!LegacyTest#testFoo
# Exclude two test methods
mvn clean install -Dtest=!LegacyTest#testFoo+testBar
# Exclude a package with a wildcard (*)
mvn clean install -Dtest=!com.mycompany.app.Legacy*

Чтобы указать maven включить конкретный тест:

# Include one file
mvn clean install -Dtest=AppTest
# Include one method
mvn clean install -Dtest=AppTest#testFoo
# Include two methods with the plus sign (+)
mvn clean install -Dtest=AppTest#testFoo+testBar
# Include multiple items comma separated and with a wildcard (*)
mvn clean install -Dtest=AppTest,Web*
# Include by Package with a wildcard (*)
mvn clean install -Dtest=com.mycompany.*.*Test

Примечание: нам может потребоваться выйти "! "при использовании bash.

mvn clean install -Dtest=\!LegacyTest

Для выхода нам придется использовать обратную косую черту (\)

1 голос
/ 05 ноября 2019

Это пропускает тесты

mvn clean install -Dmaven.test.skip=true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...