You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Elliotte Rusty Harold (Jira)" <ji...@apache.org> on 2019/12/23 12:14:00 UTC

[jira] [Commented] (MINVOKER-182) Different groovy versions on test classpath can cause ClassCastException

    [ https://issues.apache.org/jira/browse/MINVOKER-182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17002244#comment-17002244 ] 

Elliotte Rusty Harold commented on MINVOKER-182:
------------------------------------------------

another instance of  https://jlbp.dev/JLBP-1.html#separate-the-tool-classpath-from-the-product-classpath

> Different groovy versions on test classpath can cause ClassCastException
> ------------------------------------------------------------------------
>
>                 Key: MINVOKER-182
>                 URL: https://issues.apache.org/jira/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
(v8.3.4#803005)