1

For some reason, 'grails war' is including in "WEB-INF/lib" the 'groovy-1.6.9.jar' and 'groovy-all-1.7.8.jar' files. I'm working with Grails 1.3.7 and when I deploy this war in Tomcat, I receive the following error:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.codehaus.groovy.control.SourceUnit.getSource()Lorg/codehaus/groovy/control/io/ReaderSource;

The only way I'm able to deploy the war is by removing the older groovy file and the application runs fine.

I debugged the dependency process and all I could find was this:

[NOT REQUIRED] org.codehaus.groovy#groovy;1.6.9!groovy.jar
...
:: evicted modules:
junit#junit;3.8.2 by [junit#junit;4.8.1] in [test]
          in org.codehaus.groovy#groovy;1.6.9 with latest-revision

So, I continued and got to the file 'org.codehaus.groovy.modules.http-builder/http-builder/ivy-0.5.0-RC2.xml' which contains the following:

<dependency org="org.codehaus.groovy" name="groovy" rev="[1.5,1.6.99)"

I changed this line to "[1.7,1.7.8)" and the dependency process works fine and now the war deploys without any problem, but I've never touched any of this before and I'm worried. Is this the correct way to proceed with Grails dependencies?

All this started happening after installing the JQuery UI plugin and even after removing it, the problem continued.

Thanks

Eldelshell
  • 6,683
  • 7
  • 44
  • 63

1 Answers1

9

Looks like you have http-builder in your dependencies block in BuildConfig.groovy. http-builder pulls in groovy as a transitive dependency. You need to exclude it to avoid conflict with groovy-all shipped with Grails.

compile("org.codehaus.groovy.modules.http-builder:http-builder:0.5.0") {
    excludes 'groovy', 'xml-apis'
}

(note: the above example excludes xml-apis as well, you might want to do that if you're on Java 6, to avoid duplicate classes)

To track down conflicts like this, you can use the command:

grails dependency-report

which generates a report under target/dependency-report/

rlovtang
  • 4,860
  • 2
  • 30
  • 30
  • I don't have that dependency in BuildConfig. Reviewing the results, it seems my application has this dependency fron Apache HTTPClient. Anyway, I have added your example as is, and the war is created with http-builder:0.5.0 & http-builder:0.5.0-RC2. I think I might have the dependencies all messed up thanks to STS, but your response got me in the right direction for fixing this properly. Thanks. – Eldelshell Mar 03 '11 at 09:34