[ 
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)

Reply via email to