如何从gradle运行一个依赖于另一个脚本的groovy脚本

时间:2012-01-05 12:47:55

标签: groovy gradle

我正在使用Gradle附带的samples目录,并尝试创建一个运行groovy脚本的简单任务,该脚本依赖于另一个脚本。

项目结构如下:

.
├── build.gradle
└── src
    ├── main
    │   ├── groovy
    │   │   └── org
    │   │       └── gradle
    │   │           └── Person.groovy
    │   └── resources
    │       ├── resource.txt
    │       └── script.groovy
    └── test
        ├── groovy
        │   └── org
        │       └── gradle
        │           └── PersonTest.groovy
        └── resources
            ├── testResource.txt
            └── testScript.groovy

我在build.gradle

中添加了以下任务
task runScript << {
  new GroovyShell().run(file('src/main/resources/script.groovy'))
}

我得到的错误是:

FAILURE: Build failed with an exception.

* Where:
Build file '/gradle/gradle-1.0/samples/groovy/quickstart/build.gradle' line: 13

* What went wrong:
Execution failed for task ':runScript'.
Cause: No such property: person for class: script

script.groovy的内容是:

person.name = person.name[0].toUpperCase() + person.name[1..-1]

Person.groovy的内容是:     包org.gradle

class Person {
    String name

    def Person() {
        getClass().getResourceAsStream('/resource.txt').withStream {InputStream str ->
            name = str.text.trim()
        }
        getClass().getResourceAsStream('/script.groovy').withStream {InputStream str ->
            def shell = new GroovyShell()
            shell.person = this
            shell.evaluate(str.text)
        }
    }
}

问题 如何添加一个只运行script.groovy的任务,该任务使用另一个groovy类(Person

1 个答案:

答案 0 :(得分:0)

您可以使用buildSrc文件夹来保存 Groovy / Java 源,这些源将在您的初始构建脚本中执行任何任务之前编译并添加到班级路径。这将使所有这些类可用于任务。您可以在http://gradle.org/docs/current/userguide/organizing_build_logic.html

中详细了解相关信息

关于你的script.grooovy我只是将代码放入任务本身而不是通过GroovyShell调用它。如果要外部化任务,可以使用apply命令。

apply from: 'script.gradle'

您可以查看以下问题:How can I import one Gradle script into another?