Как я могу не включать задачу сборки, когда я включаю проект в свой файл settings.gradle?

Мой файл settings.gradle выглядит так:

include "serverTest", "shared"

И файл serverTest build.gradle выглядит так:

group = 'gradle'
version = '1.0'
defaultTasks 'build'
apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = JavaVersion.VERSION_1_6

dependencies
{
  compile project(':shared')
}

Структура каталогов: Верхний уровень содержит файл settings.gradle, и в нем есть общие папки и serverTest. Затем в каталоге serverTest есть файл build.gradle.

Когда я запускаю gradle на верхнем уровне, он выдает:

:shared:compileJava UP-TO-DATE
:shared:processResources UP-TO-DATE
:shared:classes UP-TO-DATE
:shared:jar UP-TO-DATE
:serverTest:compileJava UP-TO-DATE
:serverTest:processResources UP-TO-DATE
:serverTest:classes UP-TO-DATE
:serverTest:jar UP-TO-DATE
:serverTest:assemble UP-TO-DATE
:serverTest:compileTestJava
:serverTest:processTestResources UP-TO-DATE
:serverTest:testClasses
:serverTest:test

Я не хочу, чтобы он выполнял задачу :serverTest:test. Я попытался изменить свой defaultTasks только для компиляцииJava, но это не сработало, у кого-нибудь еще есть идеи?

Ответ 1

Ну, этот вопрос задавался по-разному, основная тема вопроса:

Как исключить подзадачи задачи сборки?

1. gradle build -x test

Вышеприведенная инструкция полезна при выполнении команды gradle build из CLI; это исключает тестовую задачу, но мы хотим исключить тестовую задачу программным способом в файле build.gradle. Посмотрите ниже ответ на соответствующий вопрос.

2. check.dependsOn - = test

Скопируйте этот небольшой script в файл build.gradle. Теперь, когда вы выполняете gradle build из CLI, ваши тесты не будут выполняться вообще.

Приветствия!

Ответ 2

Вы можете попытаться отключить задачу только при наличии задачи сборки... Что-то вроде:

project(":serverTest").test.onlyIf { !gradle.taskGraph.hasTask(":shared:build") }