Gradle build без тестов

636

Я хочу выполнить gradle buildбез выполнения модульных тестов. Я старался:

$ gradle -Dskip.tests build

Кажется, это ничего не делает. Есть ли какая-то другая команда, которую я мог бы использовать?

Дейв
источник
1
Может быть, это поможет вам Gradle Buil без тестов
жулик
Вы используете Java?
Нага
2
-DskipTestsдля Maven
Gayan Weerakutti

Ответы:

1241

Вы должны использовать -xаргумент командной строки, который исключает любую задачу.

Пытаться:

gradle build -x test 

Обновить:

Ссылка в комментарии Питера изменилась. Вот схема из руководства пользователя Gradle

c_maker
источник
45
Это правильный ответ. «Gradle Assembly» также пропустит много других задач. Смотрите эту схему, чтобы получить представление. Для типичных реальных сборок «сборка грейдера» оставит еще больше задач.
Питер Нидервизер
13
Ссылка от @PeterNiederwieser больше не действительна. Вероятно, он имел в виду эту диаграмму: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Дейв Л.
9
Работает, хотя вам может понадобиться добавить, например, -x integTestи так далее, поэтому не так удобно, как одеяло Maven -DskipTests.
Джесси Глик
1
@c_maker, как это сделать из затмения?
rinuthomaz
Возможно ли выполнить файл класса? Я имею в виду, с помощью которого runя вижу эффект моей программы Hello. Но я думаю, что он снова все компилирует. Я хотел бы только выполнить программу Java.
Сигур
107

Пытаться:

gradle assemble

Чтобы перечислить все доступные задачи для вашего проекта, попробуйте:

gradle tasks

ОБНОВИТЬ:

Поначалу это может показаться не самым правильным ответом, но внимательно прочитайте gradle tasksвывод или документы.

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
Эмиль Сит
источник
8
В качестве дополнительной подсказки в случае отладки юнит-тестов: gradle assembleне будут компилироваться основные файлы. Если вы работаете над исправлением модульного теста, тогда вам нужно gradle assemble testClasses- я думаю, что наименование задачи сборки довольно запутанное.
Мартин
36

Принятый ответ является правильным.

OTOH, способ, которым я ранее решил это, заключался в добавлении следующего во все проекты:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

Запустите сборку с -Dskip.tests=trueи все тестовые задачи будут пропущены.

Дэвид Резник
источник
3
Для меня это все еще единственный рабочий вариант, так как тест -x, кажется, работает только в начальном проекте, но не для зависимостей в многопроектной сборке (протестировано на Gradle 2.1). Поместите test.onlyif ... в блок configure (subprojects.findAll {javaProjects.contains (it.name)}) {) в корневой каталог build.gradle, и он будет работать для всех проектов.
Тим
Неплохо. Этот способ знаком пользователям maven.
AlexR
23

Вы можете добавить следующие строки build.gradle, **/*исключая все тесты.

test {
    exclude '**/*'
}
Гизонг Хе
источник
2
Это лучший ответ ИМХО
Марко Сулла
1
Спасибо! Ваш ответ был полезен.
ДЖЕЙ ПАТЕЛ
4

Ссылка

Чтобы исключить любую задачу из 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

Надеюсь, что это даст вам основные

Suganthan Madhavan Pillai
источник
пожалуйста, пришлите скриншот страницы. я не знаю, где поставить эту строку кода ....
Хоссейн Мансури
Этот кусок кода должен быть в вашем build.gradle :)
Suganthan Madhavan Pillai
2

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

tasks.withType(Test) {enabled = false}

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

Этот способ работает для всех видов тестовых задач, а не только для Java-тестов. Также этот способ безопасен. Вот что я имею в виду, скажем: у вас есть набор проектов на разных языках: если мы попытаемся добавить такую ​​запись в main build.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

мы потерпим неудачу в проекте, если у нас нет задачи, называемой тестами

Сергей Яковлев
источник
2

Использование -x testпропуска теста, но это также исключает компиляцию кода теста.

gradle build -x test 

В нашем случае у нас есть процесс CI / CD, где одна цель - это компиляция, а следующая цель - тестирование (Build -> Test).

Итак, для нашей первой Buildцели мы хотели убедиться, что весь проект хорошо компилируется. Для этого мы использовали:

./gradlew build testClasses -x test

На следующей цели мы просто выполняем тесты.

Федерико Пьяцца
источник
0
gradle build -x test --parallel

Если ваша машина имеет несколько ядер. Однако не рекомендуется использовать параллельную очистку.

Ян Хонски
источник
0

Пожалуйста, попробуйте это:

gradlew -DskipTests=true build

Сарат Бабу Полаварапу
источник
6
@KirankumarDafda - нет. Вы можете опубликовать ответ в любое время, даже если существующий ответ был принят. Новый ответ может быть лучше принятого ответа, или решить его по-другому, или иным образом помочь другим. Из обзора .
Вай Ха Ли
@WaiHaLee Я не могу редактировать свой комментарий, но, поскольку я получил предложения для новых пользователей, я хотел объяснить, что попробуйте добавить ответы с дополнительными пояснениями, чтобы другой пользователь мог проверить, почему этот ответ или код полезен для них.
Киранкумар Дафда
0

В плагине Java :

$ 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 build без теста у вас есть два варианта:

$ gradle assemble
$ gradle build -x test

но если вы хотите скомпилировать тест:

$ gradle assemble testClasses
$ gradle testClasses
Арнау Систах Рейносо
источник