1

FIXED

Hi all, I have it working now. Turns out I was missing the Groovy plugin (thanks Peter). See answer below. Original post left for reference.


We are new to grails and all things gradle. I've tried the simplest case I can find to use gradle to build our grails app, yet no matter what command I try (except ironically "createWrapper" which worked but has not helped) I get:

$ gradle test
Dynamic properties are deprecated: http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html
Deprecated dynamic property: "grailsVersion" on "root project 'IMPACT'", value: "2.0.4".
:test

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':test'.
> groovy/lang/GroovyObject

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 4.867 secs

It makes no difference which command I use, the output is always the same.

Gradle build.gradle file is as follows:

ext.grailsVersion = '2.0.4'

task createWrapper(type: Wrapper) {
    gradleVersion = '1.0'
}

buildscript {
    repositories {
        maven {
             url 'http://repo.grails.org/grails/core/'
        }
    }

    dependencies {
        classpath 'org.grails:grails-gradle-plugin:1.1.1-SNAPSHOT',
                  "org.grails:grails-bootstrap:2.0.4"
    }
}

apply plugin: 'groovy'
apply plugin: 'grails'

repositories {
    mavenCentral()
    maven { url 'http://repo.grails.org/grails/core/' }
    maven { url 'http://repo.grails.org/grails/plugins/' }
}    

dependencies {
    compile "org.grails:grails:2.0.4",
            "org.grails:grails-core:2.0.4",
            "org.grails:grails-hibernate:2.0.4",
            "org.grails:grails-logging:2.0.4",
            "org.grails:grails-plugin-controllers:2.0.4",
            "org.grails:grails-plugin-services:2.0.4",
            "org.grails:grails-plugin-domain-class:2.0.4",
            "org.grails:grails-plugin-datasource:2.0.4",
            "org.grails:grails-plugin-i18n:2.0.4",
            "org.grails:grails-spring:2.0.4",
            "org.grails.plugins:spring-security-core:1.2.7.3",
            "org.grails.plugins:spring-security-ldap:1.0.6"
}

Environment is: JDK 1.7.0_05, groovy 1.8.6, grails 2.0.4, gradle 1.0, Mac Os X 10.7.4.

Stack trace:


> $ gradle --stacktrace test :test
> 
> FAILURE: Build failed with an exception.
> 
> * What went wrong: Execution failed for task ':test'.
> > groovy/lang/GroovyObject
> 
> * Try: Run with --info or --debug option to get more log output.
> 
> * Exception is:
> 
> org.gradle.api.tasks.TaskExecutionException: Execution failed for task
> ':test'.  at
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:68)
>   at
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
>   at
> org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:34)
>   at
> org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter$1.run(CacheLockHandlingTaskExecuter.java:34)
>   at
> org.gradle.cache.internal.DefaultCacheAccess$2.create(DefaultCacheAccess.java:200)
>   at
> org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:172)
>   at
> org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:198)
>   at
> org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:111)
>   at
> org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:83)
>   at
> org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter.execute(CacheLockHandlingTaskExecuter.java:32)
>   at
> org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:55)
>   at
> org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
>   at
> org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)
>   at
> org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
>   at
> org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52)
>   at
> org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)
>   at
> org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:247)
>   at
> org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:192)
>   at
> org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:177)
>   at
> org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:83)
>   at
> org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:36)
>   at
> org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
>   at
> org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
>   at
> org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
>   at
> org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31)
>   at
> org.gradle.cache.internal.DefaultCacheAccess$1.create(DefaultCacheAccess.java:111)
>   at
> org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:126)
>   at
> org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:109)
>   at
> org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:103)
>   at
> org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79)
>   at
> org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java:29)
>   at
> org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
>   at
> org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
>   at
> org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
>   at
> org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
>   at
> org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
>   at
> org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
>   at
> org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:155)
>   at
> org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:110)
>   at
> org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:78)
>   at
> org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:42)
>   at
> org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:28)
>   at
> org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201)
>   at
> org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174)
>   at
> org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170)
>   at
> org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139)
>   at
> org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:31)
>   at
> org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:20)
>   at org.gradle.launcher.Main.doAction(Main.java:48)  at
> org.gradle.launcher.exec.EntryPoint.run(EntryPoint.java:45)   at
> org.gradle.launcher.Main.main(Main.java:39)   at
> org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
>   at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:32)
>   at org.gradle.launcher.GradleMain.main(GradleMain.java:24) Caused by:
> java.lang.NoClassDefFoundError: groovy/lang/GroovyObject  at
> org.grails.launcher.RootLoader.oldFindClass(RootLoader.java:143)  at
> org.grails.launcher.RootLoader.loadClass(RootLoader.java:115)     at
> org.grails.launcher.GrailsLauncher.(GrailsLauncher.java:70)     at
> org.grails.gradle.plugin.GrailsTask.createLauncher(GrailsTask.groovy:107)
>   at
> org.grails.gradle.plugin.GrailsTask.executeCommand(GrailsTask.groovy:56)
>   at
> org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:196)
>   at
> org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:102)
>   at
> org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:99)
>   at org.grails.gradle.plugin.GrailsTask_Decorated.invokeMethod(Unknown
> Source)   at
> org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23)   at
> org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$4.execute(AnnotationProcessingTaskFactory.java:150)
>   at
> org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$4.execute(AnnotationProcessingTaskFactory.java:145)
>   at
> org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:477)
>   at
> org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:466)
>   at
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:60)
>   ... 53 more Caused by: java.lang.ClassNotFoundException:
> groovy.lang.GroovyObject  at
> org.grails.launcher.RootLoader.findClass(RootLoader.java:147)     at
> org.grails.launcher.RootLoader.loadClass(RootLoader.java:119)     ... 68
> more
> 
> 
> BUILD FAILED
> 
> Total time: 5.534 secs

Any pointers or comments greatly appreciated.

Snippet from --debug output:

09:17:15.191 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
09:17:15.191 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.launcher.RootLoader.oldFindClass(RootLoader.java:143)
09:17:15.192 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.launcher.RootLoader.loadClass(RootLoader.java:115)
09:17:15.192 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.launcher.GrailsLauncher.<init>(GrailsLauncher.java:70)
09:17:15.192 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.gradle.plugin.GrailsTask.createLauncher(GrailsTask.groovy:107)
09:17:15.192 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.gradle.plugin.GrailsTask.executeCommand(GrailsTask.groovy:56)
09:17:15.192 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:196)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:102)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:99)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.gradle.plugin.GrailsTask_Decorated.invokeMethod(Unknown Source)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$4.execute(AnnotationProcessingTaskFactory.java:150)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$4.execute(AnnotationProcessingTaskFactory.java:145)
09:17:15.193 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:477)
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:466)
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:60)
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter]    ... 53 more
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.launcher.RootLoader.findClass(RootLoader.java:147)
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter]    at org.grails.launcher.RootLoader.loadClass(RootLoader.java:119)
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter]    ... 68 more
09:17:15.194 [ERROR] [org.gradle.BuildExceptionReporter] 
09:17:15.195 [LIFECYCLE] [org.gradle.BuildResultLogger] 
09:17:15.195 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED
Scott
  • 23
  • 1
  • 9
  • Stack trace, please. Deprecation warning will go away as soon as you declare `grailsVersion` as an extra property (`ext.grailsVersion = ...`). – Peter Niederwieser Jul 13 '12 at 18:13
  • Thanks Peter - fixed my annoying grailsVersion issue! Added stack trace. – Scott Jul 13 '12 at 19:47
  • Try running Gradle with the `--debug` option. That should print out the classpaths. In particular, I suspect the root loader does not have the Groovy JAR in it. Searching for "root loader" in the output should take you to the relevant output. – Peter Ledbrook Jul 17 '12 at 17:12
  • Thanks Peter, I'll try that and let you know what I find. – Scott Jul 18 '12 at 23:10
  • Hi Peter, looks like you are right: I've pasted output above. Is there a way to explicitly add the groovy jar within the gradle file? Pardon the stupid question. – Scott Jul 19 '12 at 14:32
  • Hi Peter, thanks for the tip - I've made it work! Please see the attached file and let me know if there is a better. Thank you again. I'm buying! – Scott Jul 19 '12 at 15:49
  • This is because the plugin is missing a dependency on Groovy. I need to check with Luke Daley, but you could add `groovy-all` as a dependency inside your `buildscript` section. I would prefer that to applying the Groovy plugin. – Peter Ledbrook Jul 20 '12 at 13:39
  • Hi Peter - the groovy-all allowed the tests to complete but packaging still failed. Check the answer below. Any pointers on what else I might be missing? The gradle-grails-wrapper works like a charm though. – Scott Jul 20 '12 at 17:26

3 Answers3

1

Bad news - the file below partially fixes the problem by letting the tests run, but fails when packaging the build into a WAR. I can only presume there is a missing dependency in the grails or groovy sections. I've got a much simpler working version at the bottom, which works locally for both testing and packaging. Unfortunately it still does not work with the latest Jenkins plugin.

Thank you Peter Ledbrook and Peter Niederwieser for your help resolving my issue.

Corrected gradle file is: The following file allows the tests to run (gradle test) but fails with the same error during packaging (gradle war):

ext.grailsVersion = '2.0.4'

task createWrapper(type: Wrapper) {
    gradleVersion = '1.0'
}

apply plugin: 'groovy'

repositories {
    mavenCentral()
}

dependencies {
    groovy group: 'org.codehaus.groovy', name: 'groovy-all', version: '1.8.6'
}

buildscript {
    repositories {
        maven { url {'http://repo.grails.org/grails/core/'} }
    }

    dependencies {
        classpath 'org.grails:grails-gradle-plugin:1.1.1-SNAPSHOT',
                  "org.grails:grails-bootstrap:2.0.4"
    }
}

apply plugin: 'grails'

repositories {
    mavenCentral()
    maven { url 'http://repo.grails.org/grails/core/' }
    maven { url 'http://repo.grails.org/grails/plugins/' }
}

dependencies {
    compile "org.grails:grails:2.0.4",
            "org.grails:grails-core:2.0.4",
            "org.grails:grails-hibernate:2.0.4",
            "org.grails:grails-logging:2.0.4",
            "org.grails:grails-plugin-controllers:2.0.4",
            "org.grails:grails-plugin-services:2.0.4",
            "org.grails:grails-plugin-domain-class:2.0.4",
            "org.grails:grails-plugin-datasource:2.0.4",
            "org.grails:grails-plugin-i18n:2.0.4",
            "org.grails:grails-spring:2.0.4",
            "org.grails.plugins:spring-security-core:1.2.7.3",
            "org.grails.plugins:spring-security-ldap:1.0.6"
}

A simple file that works locally is:

task createWrapper(type: Wrapper) {
    gradleVersion = '1.0'
}

buildscript {
    repositories {
      mavenCentral()
    }
    dependencies {
      classpath 'com.connorgarvey.gradle:gradle-grails-wrapper:1.0'
    }
  }

apply plugin: 'grails'

grails {
    version '2.0.4'
}

There is probably a better way - but I can't work it out!

Scott
  • 23
  • 1
  • 9
0

Looks like a class loading problem with grails-gradle-plugin. Maybe the plugin is not compatible with the Grails or Gradle version that you are using. The plugin authors might know more.

Peter Niederwieser
  • 121,412
  • 21
  • 324
  • 259
  • Hi Peter, thank you for your comment. Do you know a working version combination? I also tried grails-gradle-plugin 1.0 but I can try that again if you think it's worth a shot. Any other pointers? At the moment I've just given up. – Scott Jul 15 '12 at 19:01
  • As I said, I'd ask the plugin authors. – Peter Niederwieser Jul 15 '12 at 21:24
0

You actually need to bootstrap the version of groovy in your buildscript...

Check out Gradle / Grails application for a more complete example.

Community
  • 1
  • 1
Daniel Woods
  • 1,029
  • 7
  • 10