Skip to content

Commit f9835dd

Browse files
committed
Add ability to set forkProperties on spring boot startup
Allows for 1 of 2 options 1. A static string of the properties you want to set openApi { forkProperties = "-Dspring.profiles.active=special" } 2. You can simply pass the values from whatever you sent to gradle gw clean generateOpenApiDocs -Dspring.profiles.active=special openApi { forkProperties = System.properties }
1 parent 4eba2f1 commit f9835dd

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

src/main/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiExtension.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ open class OpenApiExtension @Inject constructor(project: Project) {
1010
val outputFileName: Property<String> = project.objects.property(String::class.java)
1111
val outputDir: DirectoryProperty = project.objects.directoryProperty()
1212
val waitTimeInSeconds: Property<Int> = project.objects.property(Int::class.java)
13+
val forkProperties: Property<Any> = project.objects.property(Any::class.java)
1314
}

src/main/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePlugin.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package org.springdoc.openapi.gradle.plugin
22

33
import com.github.jengelman.gradle.plugins.processes.tasks.Fork
4-
import org.gradle.api.GradleException
54
import org.gradle.api.Plugin
65
import org.gradle.api.Project
7-
import org.slf4j.LoggerFactory
6+
import org.gradle.api.logging.Logging
7+
import java.util.*
88

99
open class OpenApiGradlePlugin : Plugin<Project> {
10+
private val LOGGER =
11+
Logging.getLogger(OpenApiGradlePlugin::class.java)
1012

1113
override fun apply(project: Project) {
1214
// Run time dependency on the following plugins
@@ -19,13 +21,31 @@ open class OpenApiGradlePlugin : Plugin<Project> {
1921
// Spring boot jar task
2022
val bootJarTask = project.tasks.named(SPRING_BOOT_JAR_TASK_NAME)
2123

24+
val extension: OpenApiExtension = project.extensions.run {
25+
getByName(EXTENSION_NAME) as OpenApiExtension
26+
}
27+
2228
// Create a forked version spring boot run task
2329
val forkedSpringBoot = project.tasks.register(FORKED_SPRING_BOOT_RUN_TASK_NAME, Fork::class.java) { fork ->
2430
fork.dependsOn(bootJarTask)
2531

2632
fork.onlyIf {
2733
val bootJar = bootJarTask.get().outputs.files.first()
28-
fork.commandLine = listOf("java", "-jar", "$bootJar")
34+
35+
val command = mutableListOf("java", "-jar")
36+
if (extension.forkProperties.isPresent) {
37+
val element = extension.forkProperties.get()
38+
if (element is String) {
39+
command.add(element)
40+
} else if (element is Properties) {
41+
element.toMap().map { r -> "-D${r.key}=${r.value}" }.forEach { p -> command.add(p) }
42+
} else {
43+
LOGGER.warn("Failed to use the value set for 'forkProprerties'. Only String and Properties objects are supported.")
44+
}
45+
}
46+
command.add("$bootJar")
47+
48+
fork.commandLine = command
2949
true
3050
}
3151
}

0 commit comments

Comments
 (0)