Добавить зависимость задачи к существующей задаче Gradle

Я собираюсь потерять рассудок об этом. У меня есть файл build.gradle, который выглядит примерно так:

apply plugin: 'idea'
task blah{
  // do something
}
idea{
  // some stuff
  dependsOn blah
}

и я получаю следующее:

Could not find method dependsOn() for arguments [task ':blah'] on root project ...

Я не могу понять, что такое правильный синтаксис. Любая помощь?

Ответ 1

Это должно работать:

apply plugin: 'idea'
task blah{
  // do something
}
tasks.idea.dependsOn(blah)

Ответ 2

Может быть, мой рабочий пример был бы полезен - фрагменты build.gradle: (gradle версия 1.6)

ear {

    doFirst {
        tasks.buildWar.execute();
    }

    ...

}

task deployProj <<{
    tasks.ear.execute()
    tasks.copyEar.execute()
    tasks.copyJar.execute()
}

task buildWar(type: GradleBuild) {
    buildFile = 'mysubproject/build.gradle'
    tasks = ['war']
}

task copyEar(type: Copy) {
    from earPath
    into "$System.env.JBOSS_HOME" + deploymentPath
}

task copyJar(type: Copy) {
    from jarPath
    into libPath
}

copyEar.mustRunAfter 'ear'
copyJar.mustRunAfter 'ear'

Ответ 3

У меня была очень похожая ошибка:

Could not find method runEC2Step1DownloadSource() for arguments [{dependsOn=task ':docker:buildCopyEC2BuildFiles'}, task ':docker:runEC2SetupVariables', [email protected]] on project ':docker' of type org.gradle.api.Project.

Моя проблема заключалась в том, что моя задача runEC2Step1DownloadSource была определена так:

task runEC2Step0CreateMachine(dependsOn: buildCopyEC2BuildFiles, runEC2SetupVariables) {
  doLast {
    // A bunch of stuff
  }
}

И решением было добавить массив в список зависимых задач:

task runEC2Step0CreateMachine(dependsOn: [buildCopyEC2BuildFiles, runEC2SetupVariables]) {
  doLast {
    // A bunch of stuff
  }
}

Обратите внимание на дополнительные [] квадратные скобки в списке зависимых задач.