GroovyConsole работает с build.gradle

Книга GradleWare - Сборка и тестирование с Gradle - в разделе 1.1 говорится следующее: "Каждый файл сборки Gradle представляет собой исполняемый скрипт Groovy".

Однако когда я запускаю файл build.gradle в GroovyConsole, он выдает мне эту ошибку:

groovy.lang.MissingMethodException: Нет сигнатуры метода: build.apply () применим к типам аргументов: (java.util.LinkedHashMap) значения: [[plugin:android-library]] Возможные решения: any(), any(groovy.lang.Closure), каждый (), каждый (groovy.lang.Closure), разделить (groovy.lang.Closure) на build.run(build.gradle:1)

Это относится к строке 1:

apply plugin: 'android-library'

В сценарии сборки:

apply plugin: 'android-library'

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
}

android {
  compileSdkVersion 14
  buildToolsVersion '17.0.0'

  sourceSets {
    main {
      manifest.srcFile 'AndroidManifest.xml'
      java.srcDirs = ['src']
      res.srcDirs = ['res']
    }
  }
}

Не могли бы вы уточнить, является ли утверждение книги правильным или нет?

Спасибо, Игорь Ганапольский

2 ответа

Решение

Это утверждение не следует понимать буквально. Скрипт Gradle не может быть запущен с простым Groovy, точно так же, как фрагмент Javascript на веб-странице не может быть запущен в простом движке JavaScript вне браузера.

Файл сборки gradle строго говоря, а не Groovy. Это язык сценариев, также известный как DSL (предметно-ориентированный язык), написанный на Groovy. Следовательно, вам нужен дистрибутив gradle для запуска любого файла gradle, см. https://gradle.org/install/

Может быть возможно добавить задачу в файл сборки gradle для запуска Groovy Console, как описано здесь:

http://piraguaconsulting.blogspot.com.br/2012/02/gradle-groovy-console.html

Соответствующий фрагмент кода:

task(console, dependsOn: 'classes', type: JavaExec) {
   main = 'groovy.ui.Console'
   classpath = sourceSets.main.runtimeClasspath
}
Другие вопросы по тегам