在Gradle构建中使用groovy类

在Gradle构建中使用groovy类,groovy,build,gradle,Groovy,Build,Gradle,我正在尝试从build.gradle文件中运行Groovy类。我沿着方向走,但是我遇到了一个错误 生成文件是: apply plugin: 'java' apply plugin: 'groovy' main { java { srcDirs = ["$projectDir/src/java"] } groovy { srcDirs = ["$projectDir/src/groovy"] } } dependencie

我正在尝试从build.gradle文件中运行Groovy类。我沿着方向走,但是我遇到了一个错误

生成文件是:

apply plugin: 'java'
apply plugin: 'groovy'

  main {
    java {
      srcDirs = ["$projectDir/src/java"]
    }
    groovy {
      srcDirs = ["$projectDir/src/groovy"]
    }
  }

    dependencies {
        compile 'org.codehaus.groovy:groovy-all:2.2.0', files(....)
    }

    task fooTask << {
        groovyClass groovyClass = new groovyClass()
        groovyClass.foo()
    }
但是,当我尝试运行gradlew compile fooTask时,出现以下错误:

无法解析类groovyClass

知道为什么吗


谢谢

如果您想从构建(而不是在简单的Exec任务中)引用该类,则需要将该类添加到
buildSrc
。给定此目录结构:

|-buildSrc
|    |- src
|        |- main
|            |- groovy
|                |- GroovyClass.groovy
|- build.gradle
其中
GroovyClass.groovy
是:

class GroovyClass {
    void foo() {
        println 'foo'
    }
}
apply plugin: 'groovy'

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.2.1'
}

task fooTask << {
    GroovyClass g = new GroovyClass()
    g.foo()
}
build.gradle
是:

class GroovyClass {
    void foo() {
        println 'foo'
    }
}
apply plugin: 'groovy'

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.2.1'
}

task fooTask << {
    GroovyClass g = new GroovyClass()
    g.foo()
}

我已经尝试了中建议的解决方案,但问题仍然存在。您知道是否有办法改变gradle查找类的位置,因此,它将在src/src/main/groovy上查找,而不是buildSrc/src/main/groovy?我不知道。要运行构建,它首先必须运行构建,因此会出现鸡和蛋的情况。如果buildSrc中的groovy文件在这两个文件中都是必需的,并且您不想维护两个文件,那么不确定buildSrc中指向SRC中groovy文件的符号链接是否有效?gradle将从build.gradle中获取
srcDirs
中的groovy源代码。把任何你想成为gradle源目录的路径放进去,你就可以走了。