[Bug]: [swagger-gradle-plugin] ResolveTask execution fails under Gradle 9.7.1+ (Kotlin 2.4.0 internal API accessibility change)

Author: dipti259Created Sep 1, 2026Updated Sep 2, 2026
LabelsBugbacklog

Issue Description Executing tasks registered with io.swagger.v3.plugins.gradle.tasks.ResolveTask fails when running under Gradle 9.7.1, whereas the exact same task completes successfully under Gradle 9.7.0.

Gradle 9.7.1 upgraded the embedded Kotlin version to 2.4.0, which enforces strict compilation of Kotlin DSL scripts against a prebuilt public API JAR. As a result, internal Gradle APIs (org.gradle.internal.impldep.*) accessed by ResolveTask at runtime are no longer accessible during Kotlin DSL script execution, causing task execution to fail.

Environment Plugin Name: io.swagger.core.v3.swagger-gradle-plugin Plugin Version: 2.2.50 (also tested/reproduced on 2.2.55) Gradle Version: 9.7.1 (Failing), 9.7.0 (Working) JDK Version: OpenJDK 21 OS: Linux / macOS

Steps to Reproduce Configure a Gradle project using Kotlin DSL (build.gradle.kts) with io.swagger.core.v3.swagger-gradle-plugin:2.2.50. Register a OpenAPI spec generation task using ResolveTask:

import io.swagger.v3.plugins.gradle.tasks.ResolveTask
import io.swagger.v3.plugins.gradle.tasks.ResolveTask.Format.JSON
val swaggerClasspath = configurations.create("swaggerClasspath") {
    extendsFrom(configurations.runtimeClasspath.get())
}
tasks.register<ResolveTask>("generateSwagger") {
    group = "documentation"
    outputFileName = "openapi-spec"
    outputFormat = JSON
    openApiFile = file("src/main/resources/api-info.yaml")
    prettyPrint = true
    classpath = files(sourceSets["main"].output, swaggerClasspath)
    buildClasspath = classpath
    resourcePackages = setOf("com.example.rest")
    outputDir = layout.buildDirectory.dir("generated/api").get().asFile
    readAllResources = true
    sortOutput = true
}

Set gradle/wrapper/gradle-wrapper.properties to gradle-9.7.0-bin.zip and run ./gradlew generateSwagger. Result: Task completes successfully.

Update gradle/wrapper/gradle-wrapper.properties to gradle-9.7.1-bin.zip and re-run ./gradlew generateSwagger. Result: Task execution fails.

Expected Behavior ResolveTask should execute cleanly and generate the OpenAPI specification file under Gradle 9.7.1+, matching the behavior in Gradle 9.7.0.

Actual Behavior / Stacktrace FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':<task_name>' (registered in build file '<repo_name>/build.gradle.kts').

Could not isolate parameters com.swagger.v3.plugins.gradle.tasks.ResolveTask_Decorated of signed type ResolveTask org.gradle.internal.impldep.org.apache.commons.lang3.Validate

Technical Analysis & Root Cause Gradle 9.7.1 Changes: Gradle 9.7.1 introduced embedded Kotlin 2.4.0. In Kotlin 2.4.0, Kotlin DSL script compilation changed to resolve only against the public Gradle API JAR instead of dynamically generating an internal API wrapper classpath.

Impact on ResolveTask: ResolveTask relies on shaded internal dependency packages (org.gradle.internal.impldep.*) or reflection against internal Gradle task parameters. Under Gradle 9.7.1, accessing these internal types causes reflection and classloader isolation failures during task parameter isolation and execution.

Current Workaround Affected projects must cap the Gradle wrapper at Gradle 9.7.0 using version constraints:

// renovate.json5
packageRules: [
  {
    matchPackageNames: ['gradle'],
    matchManagers: ['gradle-wrapper'],
    allowedVersions: '<=9.7.0'
  }
]

Source: swagger-api/swagger-core