maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Schurman (JIRA)" <j...@codehaus.org>
Subject [jira] (MINVOKER-182) Different groovy versions on test classpath can cause ClassCastException
Date Mon, 16 Feb 2015 00:51:18 GMT
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)

Mime
View raw message