From 11ab2b27a15e5f4a8e27eab4d03324b37234c317 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 09:20:44 +0000 Subject: [PATCH 1/2] Bump jvm from 2.0.0 to 2.3.21 in /test-project-kotlin Bumps [jvm](https://github.com/JetBrains/kotlin) from 2.0.0 to 2.3.21. - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.3.21) --- updated-dependencies: - dependency-name: jvm dependency-version: 2.3.21 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- test-project-kotlin/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-project-kotlin/build.gradle.kts b/test-project-kotlin/build.gradle.kts index a233165..d8257d9 100644 --- a/test-project-kotlin/build.gradle.kts +++ b/test-project-kotlin/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "2.0.0" apply false + kotlin("jvm") version "2.3.21" apply false id("org.javamodularity.moduleplugin") version "2.0.0" apply false } From 7fd89bacee43df273597e9a4f61108cb595d1170 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Date: Fri, 24 Apr 2026 12:20:32 +0100 Subject: [PATCH 2/2] Fix TestEngine compatibility with Kotlin 2.3.x In Kotlin 2.3.x, the Kotlin Gradle Plugin adds dependency constraints to the runtimeClasspath configuration and marks it as non-declarable (canBeDeclared=false). When TestEngine.copyRecursive() copies such a configuration, Gradle throws: GradleException: Dependency constraints can not be declared against the runtimeClasspath configuration. Fix by moving copyRecursive() inside the try block and catching GradleException (which is the parent of ResolveException, so both are handled). On failure the code falls back to using direct dependencies only, as before. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../java/org/javamodularity/moduleplugin/TestEngine.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/javamodularity/moduleplugin/TestEngine.java b/src/main/java/org/javamodularity/moduleplugin/TestEngine.java index f2e8a6a..54d66dc 100644 --- a/src/main/java/org/javamodularity/moduleplugin/TestEngine.java +++ b/src/main/java/org/javamodularity/moduleplugin/TestEngine.java @@ -1,5 +1,6 @@ package org.javamodularity.moduleplugin; +import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.artifacts.*; import org.gradle.api.logging.Logger; @@ -115,17 +116,17 @@ private static Stream getModuleIdentifiers(Configuration origCfg, return getDirectDependencies(origCfg); } - Configuration cfg = origCfg.copyRecursive(); - cfg.setCanBeResolved(true); try { + Configuration cfg = origCfg.copyRecursive(); + cfg.setCanBeResolved(true); cfg.resolve(); Set flmDeps = cfg.getResolvedConfiguration().getFirstLevelModuleDependencies(); return flmDeps.stream() .flatMap(dep -> Stream.concat(getAllDeps(dep).stream(),Stream.of(dep))) .filter(dep -> isDependencyPresent(dep, files)) .map(dep -> GroupArtifact.fromModuleIdentifier(dep.getModule().getId().getModule())); - } catch (ResolveException e) { - LOGGER.debug("Cannot resolve transitive dependencies of configuration " + cfg.getName(), e); + } catch (GradleException e) { + LOGGER.debug("Cannot resolve transitive dependencies of configuration " + origCfg.getName(), e); return getDirectDependencies(origCfg); } }