Збірка Gradle без тестів


635

Я хочу виконати gradle buildбез виконання одиничних тестів. Я намагався:

$ gradle -Dskip.tests build

Це, здається, нічого не робить. Чи є якась інша команда, яку я міг би використовувати?


1
Можливо, це допоможе вам Gradle Buil без тестів
негідник хлопець

Ви використовуєте Java ??
Нага

2
-DskipTestsє для Maven
Gayan Weerakutti

Відповіді:


1239

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

Спробуйте:

gradle build -x test 

Оновлення:

Посилання в коментарі Петра змінилося. Ось схема з посібника користувача Gradle


45
Це правильна відповідь. "gradle збирати" також залишить безліч інших завдань. Дивіться цю діаграму, щоб отримати уявлення. Для типових побудов у реальному житті "збирання градусів" залишить ще більше завдань.
Peter Niederwieser

13
Посилання від @PeterNiederwieser більше не дійсне. Ймовірно, він мав на увазі цю діаграму: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Дейв Л.

9
Працює, хоча вам може знадобитися додати напр. -x integTestІ так далі, не так зручно, як ковдра Мейвена -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

Прийнята відповідь є правильною.

ОТО, я попередньо вирішив це, щоб додати наступне до всіх проектів:

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

Запустіть збірку -Dskip.tests=trueі всі тестові завдання будуть пропущені.


3
Для мене це все ще єдиний робочий варіант, оскільки тест -x, здається, працює лише на стартовому проекті, але не на залежності в складі мультипроекту (перевірено на gradle 2.1). Помістіть test.onlyif ... у налаштування (subprojects.findAll {javaProjects.contains (it.name)}) {} блоку у вашому root build.gradle, і він буде працювати для всіх проектів.
тайм

Хороший. Цей спосіб знайомий користувачам Maven.
AlexR

23

Ви можете додати наступні рядки до build.gradle, **/*виключаючи всі тести.

test {
    exclude '**/*'
}

2
Це найкраща відповідь ІМХО
Марко Сулла

1
Дякую! Ваша відповідь була корисною.
JAY PATEL


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

Сподіваюся, це дасть тобі основне


будь ласка, надішліть знімок екрана сторінки. Я не знаю, куди поставити цей рядок коду ....
Хоссен Мансурі

Цей фрагмент коду має входити у ваш build.gradle :)
Suganthan Madhavan Pillai

2

інший спосіб відключення тестових завдань у проекті:

tasks.withType(Test) {enabled = false}

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

Цей спосіб працює на всі види тестових завдань, а не лише на тести Java. Також цей спосіб безпечний. Ось що я маю на увазі, скажімо: у вас є набір проектів різними мовами: якщо ми спробуємо додати такий тип запису в основному 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 без тесту у вас є два варіанти:

$ gradle assemble
$ gradle build -x test

але якщо ви хочете скласти тест:

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