Andrew Schurman created MINVOKER-182:
----------------------------------------
Summary: Different groovy versions on test classpath can cause
ClassCastException
Key: MINVOKER-182
URL: https://jira.codehaus.org/browse/MINVOKER-182
Project: Maven Invoker Plugin
Issue Type: Bug
Affects Versions: 1.8
Reporter: Andrew Schurman
Priority: Minor
When {{addTestClassPath}} is set and you have a different version of groovy
than invoker on your classpath, you will run into {{ClassCastException}} when
pre-/post- build hooks are run for tests. This occurs due to invoker creating
groovy scripts in its version of groovy, but using a different version of
groovy as the runtime (since test classpath elements are loaded first when
{{addTestClassPath=true}}).
In my specific case, I had a transitive dependency on groovy 1.7, but invoker
uses groovy 2.0. Being transitive does make it harder to spot, but
more importantly you may not have access to the dependency that depends on
groovy. This could make swapping groovy versions impossible depending on the
gap between versions.
Stack trace:
{code}
groovy.lang.GroovyRuntimeException: Failed to create Script instance for class:
class Script1. Reason: java.lang.ClassCastException: Script1 cannot be
cast to groovy.lang.GroovyObject
at
org.codehaus.groovy.runtime.InvokerHelper.createScript(InvokerHelper.java:443)
at groovy.lang.GroovyShell.parse(GroovyShell.java:625)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:516)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:556)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:527)
at
org.apache.maven.shared.scriptinterpreter.GroovyScriptInterpreter.evaluateScript(GroovyScriptInterpreter.java:83)
at
org.apache.maven.shared.scriptinterpreter.ScriptRunner.executeRun(ScriptRunner.java:249)
at
org.apache.maven.shared.scriptinterpreter.ScriptRunner.run(ScriptRunner.java:177)
at
org.apache.maven.plugin.invoker.AbstractInvokerMojo.runBuild(AbstractInvokerMojo.java:1692)
at
org.apache.maven.plugin.invoker.AbstractInvokerMojo.runBuild(AbstractInvokerMojo.java:1360)
at
org.apache.maven.plugin.invoker.AbstractInvokerMojo.runBuilds(AbstractInvokerMojo.java:1210)
at
org.apache.maven.plugin.invoker.AbstractInvokerMojo.execute(AbstractInvokerMojo.java:723)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ClassCastException: Script1 cannot be cast to
groovy.lang.GroovyObject
at
org.codehaus.groovy.runtime.InvokerHelper.createScript(InvokerHelper.java:421)
... 32 more
{code}
--
This message was sent by Atlassian JIRA
(v6.1.6#6162)