1
votes

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
3
Stack trace, please. Deprecation warning will go away as soon as you declare grailsVersion as an extra property (ext.grailsVersion = ...). - Peter Niederwieser
Thanks Peter - fixed my annoying grailsVersion issue! Added stack trace. - Scott
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
Thanks Peter, I'll try that and let you know what I find. - Scott
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

3 Answers

1
votes

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!

0
votes

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.

0
votes

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

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