[ https://issues.apache.org/jira/browse/MINVOKER-182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17277497#comment-17277497 ]
Bertrand Martin commented on MINVOKER-182: ------------------------------------------ Suggestion: Use [groovysh|https://groovy-lang.org/groovysh.html] to run *verify.groovy*, so there is no conflict with the current JVM and whatever dependencies are loaded by the project being tested with maven-invoker-plugin. > 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)