Как я могу выполнить только заданную задачу c в build.gradle? - PullRequest
1 голос
/ 28 апреля 2020

build.gradle - это:

task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
    from "src"
    into "dest"
    println "copy"
}

task hello {
    println "hello"
}

И когда я пытаюсь с ./gradlew copy, выполняются и copy, и hello. Вывод, как показано ниже:

> Configure project :
copy
hello

Как я могу выполнить только copy?

1 Ответ

2 голосов
/ 28 апреля 2020

В вашем примере выполняется только задача copy. Тем не менее, оба настроены .

Сборка Gradle имеет три различных фазы в жизненных циклах сборки:

  1. Фаза инициализации
  2. Конфигурация фаза
  3. фаза выполнения

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

Оператор println, который вы имеете в задаче hello, является частью конфигурации, и поэтому вы видите его независимо от того, какую задачу вы намереваетесь выполнить. Вы также можете увидеть в выводе, который находится под заголовком > Configure project :.

Если вы хотите печатать «hello» только при фактическом выполнении, переместите его в блок doLast, например:

task hello {
    doLast {
        println "hello"
    }
}
...