Изолированные задачи Gradle?

#gradle #build.gradle

#gradle #build.gradle

Вопрос:

Я пытаюсь перенести несколько запутанный Makefile в Gradle. Мне нужно иметь возможность иметь некоторые задачи, которые выполняются изолированно друг от друга, но я не могу понять, как это сделать в Gradle; например, если у меня есть build.gradle, который выглядит следующим образом:

 apply plugin: 'eclipse'
apply plugin: 'idea'

task foo {
  println 'foo'
}

task bar {
  println 'bar'
}

task baz {
  println 'baz'
}
 

Если я запущу:

gradle -q foo

Тогда я ожидаю увидеть

фу

Но вместо этого я вижу:

foobarbaz

распечатано на моем терминале.

Как я могу настроить Gradle для выполнения только одной задачи?

Ответ №1:

Вы не предоставили задачам никакой функциональности; то, что вы видите, — это выходные данные создаваемых задач.

Измените build.gradle на это…

 task foo {
  doLast {
    println 'foo'
  }
}

task bar << {
  println 'bar'
}

task baz {
  println 'baz'
}
 

а затем запустите задачу foo:

gradle foo

Ваш вывод должен быть…

 baz
:foo
foo
 

…показывает, что baz был выведен при создании задачи baz, затем была выполнена задача foo («:foo») с последующим выводом задачи foo. Обратите внимание, что оператор «<<» является псевдонимом для doLast.

См. Основы сценария сборки в Руководстве пользователя Gradle.