Using groovy classes in Gradle build

I am trying to run the Groovy class from my build.gradle file. I follow the directions in the usage guide , however I get an error message.

Build File:

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() } 

The Groovy class is very simple:

  public class groovyClass { public void foo() { println 'foo' } } 

However, when I try to run gradlew compile fooTask , I get the following error:

failed to resolve groovyClass class

Any idea why?

thanks

+8
build groovy gradle
source share
1 answer

You need to add the class to buildSrc if you want to reference it from the assembly (and not in the simple Exec task). Given this directory structure:

 |-buildSrc | |- src | |- main | |- groovy | |- GroovyClass.groovy |- build.gradle 

Where is GroovyClass.groovy :

 class GroovyClass { void foo() { println 'foo' } } 

And build.gradle :

 apply plugin: 'groovy' dependencies { compile 'org.codehaus.groovy:groovy-all:2.2.1' } task fooTask << { GroovyClass g = new GroovyClass() g.foo() } 

Then running gradle fooTask gives the result:

 $ 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 
+16
source share

All Articles