-
Notifications
You must be signed in to change notification settings - Fork 127
Open
Description
When adding org.asciidoctor.jvm.gradle.plugin as a dependency to another Gradle plugin project, Groovy tests fail with a GroovyRuntimeException due to conflicting Groovy module versions.
Error message:
GroovyRuntimeException: Conflicting module versions. Module [groovy-nio is loaded in version 3.0.17 and you are trying to load version 4.0.28
groovy-nio:4.0.28 is embedded in Gradle 9.1.0, but the plugin drags in groovy-nio:3.0.17
Steps to reproduce:
- Create a plugin project with the following build.gradle.kts
plugins {
id("groovy")
id("java-gradle-plugin")
}
group = "example"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
gradlePluginPortal()
}
dependencies {
implementation("org.asciidoctor.jvm:org.asciidoctor.jvm.gradle.plugin:5.0.0-alpha.1")
testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
tasks.test {
useJUnitPlatform()
}
gradlePlugin {
plugins {
create("documentation") {
id = "example.documentation"
implementationClass = "example.DocumentationPlugin"
}
}
}
- Add any simple Groovy test, e.g. ExampleTest.groovy.
- Run ./gradlew test
java.lang.ExceptionInInitializerError
at org.codehaus.groovy.reflection.ClassInfo.isValidWeakMetaClass(ClassInfo.java:283)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClassForClass(ClassInfo.java:253)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:309)
at example.ExampleTest.$getStaticMetaClass(ExampleTest.groovy)
at example.ExampleTest.<init>(ExampleTest.groovy)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-nio is loaded in version 3.0.17 and you are trying to load version 4.0.28
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:524)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:85)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:79)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:61)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:54)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:133)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:94)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:37)
... 10 more
Workaround:
Exclude groovy-nio from the plugin dependency:
implementation("org.asciidoctor.jvm:org.asciidoctor.jvm.gradle.plugin:5.0.0-alpha.1") {
exclude("org.codehaus.groovy", "groovy-nio")
}
Metadata
Metadata
Assignees
Labels
No labels