[Bug]: [swagger-gradle-plugin] ResolveTask execution fails under Gradle 9.7.1+ (Kotlin 2.4.0 internal API accessibility change)
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