在Gradle build中使用groovy类

jon*_*zin 8 groovy build gradle

我正在尝试从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()
    }
Run Code Online (Sandbox Code Playgroud)

groovy类非常简单:

    public class groovyClass {

            public void foo() {
                    println 'foo'
            }
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行gradlew编译fooTask时,我收到以下错误:

无法解析类groovyClass

知道为什么吗?

谢谢

tim*_*tes 22

buildSrc如果要从构建中引用它(而不是在简单的Exec任务中),则需要添加该类.鉴于此目录结构:

|-buildSrc
|    |- src
|        |- main
|            |- groovy
|                |- GroovyClass.groovy
|- build.gradle
Run Code Online (Sandbox Code Playgroud)

在哪里GroovyClass.groovy:

class GroovyClass {
    void foo() {
        println 'foo'
    }
}
Run Code Online (Sandbox Code Playgroud)

并且build.gradle是:

apply plugin: 'groovy'

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

task fooTask << {
    GroovyClass g = new GroovyClass()
    g.foo()
}
Run Code Online (Sandbox Code Playgroud)

然后,运行gradle fooTask给出输出:

$ gradle fooTask
:buildSrc:compileJava UP-TO-DATE
:buildSrc:compileGroovy UP-TO-DATE
:buildSrc:processResources UP-TO-DATE
:buildSrc:classes UP-TO-DATE
:buildSrc:jar UP-TO-DATE
:buildSrc:assemble UP-TO-DATE
:buildSrc:compileTestJava UP-TO-DATE
:buildSrc:compileTestGroovy UP-TO-DATE
:buildSrc:processTestResources UP-TO-DATE
:buildSrc:testClasses UP-TO-DATE
:buildSrc:test UP-TO-DATE
:buildSrc:check UP-TO-DATE
:buildSrc:build UP-TO-DATE
:fooTask
foo

BUILD SUCCESSFUL

Total time: 4.604 secs
Run Code Online (Sandbox Code Playgroud)

  • 你知道是否有办法改变gradle查找类的位置,所以不是buildSrc/src/main/groovy它会在src/main/groovy中找到它吗? (2认同)