Skip to content

Commit 259ee2d

Browse files
author
sergeyk
committed
fix(gradle-plugin): use Worker API classLoaderIsolation to prevent Jackson version conflicts (#18753)
Move code generation into a Gradle Worker API WorkAction with classLoaderIsolation, preventing buildscript classpath conflicts (e.g. Jackson version mismatches from Spring Boot or other plugins). - Extract generation logic into GenerateWorkAction/GenerateWorkParameters - Always use classLoaderIsolation in GenerateTask.doWork() - Add openApiGeneratorClasspath configuration for custom generator jars - Wire missing enumNameMappings and operationIdNameMappings from extension to task - Add TestKit tests for WorkAction property wiring
1 parent 20b18ad commit 259ee2d

6 files changed

Lines changed: 633 additions & 355 deletions

File tree

modules/openapi-generator-gradle-plugin/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ dependencies {
4747
tasks.named("test", Test).configure {
4848
useTestNG()
4949
testLogging.showStandardStreams = false
50+
systemProperty("openApiGeneratorVersion", openApiGeneratorVersion)
5051

5152
beforeTest { descriptor ->
5253
logger.lifecycle("Running test: " + descriptor)

modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
6262

6363
generate.outputDir.set(project.layout.buildDirectory.dir("generate-resources/main").map { it.asFile.path })
6464

65+
val openApiGeneratorClasspath = configurations.create("openApiGeneratorClasspath") {
66+
isCanBeConsumed = false
67+
isCanBeResolved = true
68+
description = "Extra jars for the OpenAPI Generator worker (custom generators)"
69+
}
70+
6571
tasks.apply {
6672
register("openApiGenerators", GeneratorsTask::class.java).configure {
6773
group = pluginGroup
@@ -93,6 +99,8 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
9399
description =
94100
"Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents."
95101

102+
generatorClasspath.setFrom(openApiGeneratorClasspath)
103+
96104
verbose.set(generate.verbose)
97105
validateSpec.set(generate.validateSpec)
98106
generatorName.set(generate.generatorName)
@@ -126,6 +134,8 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
126134
nameMappings.set(generate.nameMappings)
127135
modelNameMappings.set(generate.modelNameMappings)
128136
parameterNameMappings.set(generate.parameterNameMappings)
137+
enumNameMappings.set(generate.enumNameMappings)
138+
operationIdNameMappings.set(generate.operationIdNameMappings)
129139
openapiNormalizer.set(generate.openapiNormalizer)
130140
invokerPackage.set(generate.invokerPackage)
131141
groupId.set(generate.groupId)

0 commit comments

Comments
 (0)