Grails

create an official gradle plugin to support grails

Details

  • Type: New Feature New Feature
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.3.4
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None

Description

I am trying to move my project to gradle and everything was going smoothly until I reached my grails application. My project is a multi project build and what I would love to write is:

build.gradle
------------
apply plugin: 'grails'
dependencies {
  compile project(':kiwidoc:com.pongasoft.kiwidoc.index.api')
  compile project(':utils:util-core')
}

and have run, war and test targets.

I could imagine 2 different ways of implementing it (ideally configurable):

  • rely on a local install of grails (GRAILS_HOME)
  • use artifacts in a repo

Now that grails 1.3.4 uses gradle for its own build system, it would be great to be integrated with gradle when using grails.

Activity

Hide
Luke Daley added a comment -

Peter, if you pull my changes to the plugin it would solve this particular issue.

Show
Luke Daley added a comment - Peter, if you pull my changes to the plugin it would solve this particular issue.
Hide
Peter Ledbrook added a comment -

The plugin has been available in snapshot form for a while, but I've incorporated some changes from Luke and released as version 1.0. Some documentation can be found on its GitHub page.

Show
Peter Ledbrook added a comment - The plugin has been available in snapshot form for a while, but I've incorporated some changes from Luke and released as version 1.0. Some documentation can be found on its GitHub page.
Hide
Yan Pujante added a comment -

I just tried the plugin and it does what I needed except it does not boot with an exception:

Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Aspect
	at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	... 50 more

Note that I am not using aspectj in my code. It must be grails needing it. I am using grails 1.3.4.

Show
Yan Pujante added a comment - I just tried the plugin and it does what I needed except it does not boot with an exception:
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Aspect
	at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	... 50 more
Note that I am not using aspectj in my code. It must be grails needing it. I am using grails 1.3.4.
Hide
Yan Pujante added a comment -

Full stack trace is:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grailsApplicationPostProcessor': BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
	at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:164)
	at grails.web.container.EmbeddableServer$start.call(Unknown Source)
	at _GrailsRun$_run_closure5_closure12.doCall(_GrailsRun.groovy:158)
	at _GrailsRun$_run_closure5_closure12.doCall(_GrailsRun.groovy)
	at _GrailsSettings$_run_closure10.doCall(_GrailsSettings.groovy:280)
	at _GrailsSettings$_run_closure10.call(_GrailsSettings.groovy)
	at _GrailsRun$_run_closure5.doCall(_GrailsRun.groovy:149)
	at _GrailsRun$_run_closure5.call(_GrailsRun.groovy)
	at _GrailsRun.runInline(_GrailsRun.groovy:116)
	at _GrailsRun.this$4$runInline(_GrailsRun.groovy)
	at _GrailsRun$_run_closure1.doCall(_GrailsRun.groovy:59)
	at RunApp$_run_closure1.doCall(RunApp.groovy:33)
	at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
	at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
	at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
	at gant.Gant.withBuildListeners(Gant.groovy:427)
	at gant.Gant.this$2$withBuildListeners(Gant.groovy)
	at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
	at gant.Gant.dispatch(Gant.groovy:415)
	at gant.Gant.this$2$dispatch(Gant.groovy)
	at gant.Gant.invokeMethod(Gant.groovy)
	at gant.Gant.executeTargets(Gant.groovy:590)
	at gant.Gant.executeTargets(Gant.groovy:589)
	at org.grails.gradle.plugin.GrailsPlugin.runGrails(GrailsPlugin.groovy:221)
	at org.grails.gradle.plugin.GrailsPlugin.this$2$runGrails(GrailsPlugin.groovy)
	at org.grails.gradle.plugin.GrailsPlugin$this$2$runGrails.callCurrent(Unknown Source)
	at org.grails.gradle.plugin.GrailsPlugin.runGrailsWithProps(GrailsPlugin.groovy:107)
	at org.grails.gradle.plugin.GrailsPlugin.this$2$runGrailsWithProps(GrailsPlugin.groovy)
	at org.grails.gradle.plugin.GrailsPlugin$_apply_closure6_closure12_closure13.doCall(GrailsPlugin.groovy:76)
	at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:445)
	at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:432)
	at org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:41)
	at org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
	at org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
	at org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
	at org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
	at org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
	at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
	at org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
	at org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
	at org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
	at org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:161)
	at org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
	at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
	at org.gradle.launcher.Main.execute(Main.java:93)
	at org.gradle.launcher.Main.main(Main.java:42)
	at org.gradle.launcher.GradleMain.main(GradleMain.java:49)
Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
	... 50 more
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Aspect
	at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	... 50 more
Show
Yan Pujante added a comment - Full stack trace is:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grailsApplicationPostProcessor': BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
	at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:164)
	at grails.web.container.EmbeddableServer$start.call(Unknown Source)
	at _GrailsRun$_run_closure5_closure12.doCall(_GrailsRun.groovy:158)
	at _GrailsRun$_run_closure5_closure12.doCall(_GrailsRun.groovy)
	at _GrailsSettings$_run_closure10.doCall(_GrailsSettings.groovy:280)
	at _GrailsSettings$_run_closure10.call(_GrailsSettings.groovy)
	at _GrailsRun$_run_closure5.doCall(_GrailsRun.groovy:149)
	at _GrailsRun$_run_closure5.call(_GrailsRun.groovy)
	at _GrailsRun.runInline(_GrailsRun.groovy:116)
	at _GrailsRun.this$4$runInline(_GrailsRun.groovy)
	at _GrailsRun$_run_closure1.doCall(_GrailsRun.groovy:59)
	at RunApp$_run_closure1.doCall(RunApp.groovy:33)
	at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
	at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
	at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
	at gant.Gant.withBuildListeners(Gant.groovy:427)
	at gant.Gant.this$2$withBuildListeners(Gant.groovy)
	at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
	at gant.Gant.dispatch(Gant.groovy:415)
	at gant.Gant.this$2$dispatch(Gant.groovy)
	at gant.Gant.invokeMethod(Gant.groovy)
	at gant.Gant.executeTargets(Gant.groovy:590)
	at gant.Gant.executeTargets(Gant.groovy:589)
	at org.grails.gradle.plugin.GrailsPlugin.runGrails(GrailsPlugin.groovy:221)
	at org.grails.gradle.plugin.GrailsPlugin.this$2$runGrails(GrailsPlugin.groovy)
	at org.grails.gradle.plugin.GrailsPlugin$this$2$runGrails.callCurrent(Unknown Source)
	at org.grails.gradle.plugin.GrailsPlugin.runGrailsWithProps(GrailsPlugin.groovy:107)
	at org.grails.gradle.plugin.GrailsPlugin.this$2$runGrailsWithProps(GrailsPlugin.groovy)
	at org.grails.gradle.plugin.GrailsPlugin$_apply_closure6_closure12_closure13.doCall(GrailsPlugin.groovy:76)
	at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:445)
	at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:432)
	at org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:41)
	at org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
	at org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
	at org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
	at org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
	at org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
	at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
	at org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
	at org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
	at org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
	at org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:161)
	at org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
	at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
	at org.gradle.launcher.Main.execute(Main.java:93)
	at org.gradle.launcher.Main.main(Main.java:42)
	at org.gradle.launcher.GradleMain.main(GradleMain.java:49)
Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
	... 50 more
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Aspect
	at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	... 50 more
Hide
Peter Ledbrook added a comment -

This needs fixing in the Grails core POM. I forgot to mention it in the plugin's README. In the meantime, add:

runtime org.aspectj:aspectjrt:1.6.8

as a project dependency.

Show
Peter Ledbrook added a comment - This needs fixing in the Grails core POM. I forgot to mention it in the plugin's README. In the meantime, add:
runtime org.aspectj:aspectjrt:1.6.8
as a project dependency.
Hide
Graeme Rocher added a comment -

Bulk closing bunch of resolved issues

Show
Graeme Rocher added a comment - Bulk closing bunch of resolved issues

People

Vote (3)
Watch (4)

Dates

  • Created:
    Updated:
    Resolved: