'Eclipse Groovy: Conflicting module versions when runing unittest

I'm using Eclipse 2022-03 (4.23.0) with Groovy DevTools of 4.5.0.v202203311327-e2203-RELEASE.

My dependencies are as follows:

dependencies {
  implementation "org.codehaus.groovy:groovy:$groovyVersion"
  implementation "org.codehaus.groovy:groovy-json:$groovyVersion"
  implementation "org.codehaus.groovy:groovy-templates:$groovyVersion"
  implementation "org.codehaus.groovy:groovy-dateutil:$groovyVersion"
  implementation "org.codehaus.groovy:groovy-yaml:$groovyVersion"
    
  testImplementation "org.codehaus.groovy:groovy-all:$groovyVersion"
  testImplementation "org.codehaus.groovy:groovy-xml:$groovyVersion"
}

with groovyVersion=3.0.10.

When I run a test like this one:

class GrantASTTransformationTest extends GroovyTestCase {

  @Test
  void 'some test'() {
    fail 'not implemented'
  }
}

the exception is thrown:

java.lang.ExceptionInInitializerError
    at org.codehaus.groovy.reflection.ClassInfo.isValidWeakMetaClass(ClassInfo.java:284)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClassForClass(ClassInfo.java:254)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:310)
    at io.lootwalk.ast.GrantASTTransformationTest.$getStaticMetaClass(GrantASTTransformationTest.groovy)
    at io.lootwalk.ast.GrantASTTransformationTest.<init>(GrantASTTransformationTest.groovy)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
......
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-swing is loaded in version 3.0.8 and you are trying to load version 3.0.10
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:510)
    at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
    at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
    at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
    at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:54)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:125)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:37)
    ... 74 more

I "reacted" by including the following line into my Gradle-dependencies:

implementation "org.codehaus.groovy:groovy-swing:$groovyVersion"

then the test goes red with an expected exception:

junit.framework.AssertionFailedError: not implemented

That seems weird enough of course, as I'm not using groovy-swing in my app.

Any proper way to fix the issue?

FOLLOW UP:

This is how my Run Configuration looks like:

enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source