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
}