Gradle build без тестов
Я хочу выполнить gradle build
без выполнения модульных тестов. Я старался:
$ gradle -Dskip.tests build
Кажется, это ничего не делает. Есть ли какая-то другая команда, которую я мог бы использовать?
7 ответов
Вы должны использовать -x
Аргумент командной строки, который исключает любую задачу.
Пытаться:
gradle build -x test
Обновить:
Ссылка в комментарии Питера изменилась. Вот схема из руководства пользователя Gradle
Пытаться:
gradle assemble
Чтобы перечислить все доступные задачи для вашего проекта, попробуйте:
gradle tasks
ОБНОВИТЬ:
На первый взгляд это может показаться не самым правильным ответом, но внимательно прочитайте gradle tasks
вывод или документы.
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
Вы можете попробовать добавить следующие строки в build.gradle
, **/*
исключить все тесты.
test {
exclude '**/*'
}
Принятый ответ является правильным.
OTOH, способ, которым я ранее решил это было добавить следующее для всех проектов:
test.onlyIf { ! Boolean.getBoolean('skip.tests') }
Запустите сборку с -Dskip.tests=true
и все тестовые задания будут пропущены.
С помощью -x test
пропустить выполнение теста, но это также исключает компиляцию тестового кода.
gradle build -x test
В нашем случае у нас есть процесс CI/CD, в котором одна цель - компиляция, а следующая цель - тестирование (Сборка -> Тест).
Итак, для нашего первого Build
цель мы хотели убедиться, что весь проект хорошо компилируется. Для этого мы использовали:
./gradlew build testClasses -x test
По следующей цели мы просто выполняем тесты.
Каждое действие в Gradle - это task
, и так test
. И исключитьtask
из Gradle Run вы можете использовать опцию --exclude-task
или это стенография -x
за которым следует имя задачи, которую необходимо исключить. Пример:
gradle build -x test
В -x
опцию следует повторить для всех задач, которые необходимо исключить.
Если у вас разные задачи для разных типов тестов в вашем build.gradle
файл, то вам нужно пропустить все те задачи, которые выполняет test. Скажите, что у вас есть задачаtest
который выполняет юнит-тесты и задачу testFunctional
который выполняет функциональные тесты. В этом случае вы можете исключить все тесты, как показано ниже:
gradle build -x test -x testFunctional
Вы можете исключить задачи
gradle build --exclude-task test
https://docs.gradle.org/current/userguide/command_line_interface.html
Другой способ отключить тестовые задачи в проекте:
tasks.withType(Test) {enabled = false}
такое поведение иногда требуется, если вы хотите отключить тесты в одном из проектов (или в группе проектов).
Этот способ работает для всех видов тестовых задач, а не только для Java-тестов. Также этот способ безопасен. Вот что я имею в виду, скажем: у вас есть набор проектов на разных языках: если мы попытаемся добавить этот вид записи в основной build.gradle
:
subprojects{
.......
tests.enabled=false
.......
}
мы потерпим неудачу в проекте, если у нас нет задачи, называемой тестами
Чтобы исключить любую задачу из использования gradle -x
опция командной строки. Смотрите пример ниже
task compile << {
println 'task compile'
}
task compileTest(dependsOn: compile) << {
println 'compile test'
}
task runningTest(dependsOn: compileTest) << {
println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
println 'running distribution job'
}
Выход: gradle -q dist -x runningTest
task compile
compile test
running distribution job
Надеюсь, что это даст вам основные
$ gradle tasks
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.
Verification tasks
------------------
test - Runs the unit tests.
Сборка Gradle без теста у вас есть два варианта:
$ gradle assemble
$ gradle build -x test
но если вы хотите скомпилировать тест:
$ gradle assemble testClasses
$ gradle testClasses
Вам нужно будет добавить -x test
например ./gradlew build -x test
или
gradle build -x test
gradle build -x test --parallel
Если ваша машина имеет несколько ядер. Однако не рекомендуется использовать параллельную очистку.