【问题标题】:GroovyConsole running build.gradleGroovyConsole 运行 build.gradle
【发布时间】:2013-10-10 13:59:33
【问题描述】:

GradleWare 的书 - Building and Testing with Gradle - 在第 1.1 节中陈述了以下内容: “每个 Gradle 构建文件都是一个可执行的 Groovy 脚本。”

但是,当我在 GroovyConsole 中运行 build.gradle 文件时,它给了我这个错误:

groovy.lang.MissingMethodException:没有方法签名: build.apply() 适用于参数类型: (java.util.LinkedHashMap) 值:[[plugin:android-library]] 可能 解决方案:any()、any(groovy.lang.Closure)、every()、 每个(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']
    }
  }
}

那么你能澄清一下这本书的说法是对还是错吗?

谢谢你, 伊戈尔·加纳波尔斯基

【问题讨论】:

    标签: gradle android-gradle-plugin groovy-console


    【解决方案1】:

    严格来说,gradle 构建文件不是 groovy。 它是一种脚本语言,又名 DSL(领域特定语言)编写 groovy。因此,您需要 gradle 发行版来运行任何 gradle 文件,请参阅:https://gradle.org/install/

    【讨论】:

    • Android Studio 自带 Gradle
    • 但是他在 GroovyConsole 中运行它,因此他必须导入相关的 graddle 类,也就是将 *.jars 添加到类路径中。
    【解决方案2】:

    可以将任务添加到 gradle 构建文件以启动 Groovy 控制台,如下所述:

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

    相关代码sn-p为:

    task(console, dependsOn: 'classes', type: JavaExec) {
       main = 'groovy.ui.Console'
       classpath = sourceSets.main.runtimeClasspath
    }
    

    【讨论】:

      【解决方案3】:

      这句话不能从字面上理解。 Gradle 脚本无法使用普通的 Groovy 运行,就像网页上的 Javascript sn-p 无法在浏览器外部的普通 JavaScript 引擎中运行一样。

      【讨论】:

      • 如果 stmt 不能按字面理解,那么如何理解:隐喻还是象征?使用 Node.js,JavaScript 可以很容易地在浏览器之外运行!
      • 你没有明白我的意思。 Gradle 构建脚本类似于使用 DOM 和其他浏览器 API 的 JavaScript 代码,因此无法在浏览器之外运行。
      • 这完全取决于您如何定义“可执行 Groovy 脚本”。它是一个 Groovy 脚本吗?是的。是否可执行?是的。它可以在任何环境中运行吗?没有。
      • 我明白了。谢谢你的解释。我认为那段文档可能会误导 Gradle 的初学者......
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2016-11-22
      • 2020-01-26
      • 1970-01-01
      • 2015-02-11
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多