Skip to content

Commit f1725e2

Browse files
authored
Merge pull request #103 from Sineaggi/fix-gradle-issues
Fix a few gradle issues
2 parents 4728413 + c193d14 commit f1725e2

File tree

3 files changed

+35
-31
lines changed

3 files changed

+35
-31
lines changed
Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,37 @@
11
package org.springdoc.openapi.gradle.plugin
22

33
import org.gradle.api.Action
4-
import org.gradle.api.Project
54
import org.gradle.api.file.ConfigurableFileCollection
65
import org.gradle.api.file.DirectoryProperty
7-
import org.gradle.api.file.RegularFileProperty
6+
import org.gradle.api.file.ProjectLayout
7+
import org.gradle.api.model.ObjectFactory
88
import org.gradle.api.provider.ListProperty
99
import org.gradle.api.provider.MapProperty
1010
import org.gradle.api.provider.Property
1111
import javax.inject.Inject
1212

13-
open class OpenApiExtension @Inject constructor(project: Project) {
14-
val apiDocsUrl: Property<String> = project.objects.property(String::class.java)
15-
val outputFileName: Property<String> = project.objects.property(String::class.java)
16-
val outputDir: DirectoryProperty = project.objects.directoryProperty()
17-
val waitTimeInSeconds: Property<Int> = project.objects.property(Int::class.java)
18-
val groupedApiMappings: MapProperty<String, String> = project.objects.mapProperty(String::class.java, String::class.java)
19-
val customBootRun: CustomBootRunAction = project.objects.newInstance(CustomBootRunAction::class.java, project)
13+
open class OpenApiExtension @Inject constructor(
14+
objects: ObjectFactory,
15+
) {
16+
val apiDocsUrl: Property<String> = objects.property(String::class.java)
17+
val outputFileName: Property<String> = objects.property(String::class.java)
18+
val outputDir: DirectoryProperty = objects.directoryProperty()
19+
val waitTimeInSeconds: Property<Int> = objects.property(Int::class.java)
20+
val groupedApiMappings: MapProperty<String, String> = objects.mapProperty(String::class.java, String::class.java)
21+
val customBootRun: CustomBootRunAction = objects.newInstance(CustomBootRunAction::class.java)
2022
fun customBootRun(action: Action<CustomBootRunAction>) {
2123
action.execute(customBootRun)
2224
}
2325
}
2426

2527
open class CustomBootRunAction @Inject constructor(
26-
project: Project,
28+
objects: ObjectFactory,
2729
) {
28-
val systemProperties: MapProperty<String, Any> = project.objects.mapProperty(String::class.java, Any::class.java)
29-
val workingDir: RegularFileProperty = project.objects.fileProperty()
30-
val mainClass: Property<String> = project.objects.property(String::class.java)
31-
val args: ListProperty<String> = project.objects.listProperty(String::class.java)
32-
val classpath: ConfigurableFileCollection = project.objects.fileCollection()
33-
val jvmArgs: ListProperty<String> = project.objects.listProperty(String::class.java)
34-
val environment: MapProperty<String, Any> = project.objects.mapProperty(String::class.java, Any::class.java)
30+
val systemProperties: MapProperty<String, Any> = objects.mapProperty(String::class.java, Any::class.java)
31+
val workingDir: DirectoryProperty = objects.directoryProperty()
32+
val mainClass: Property<String> = objects.property(String::class.java)
33+
val args: ListProperty<String> = objects.listProperty(String::class.java)
34+
val classpath: ConfigurableFileCollection = objects.fileCollection()
35+
val jvmArgs: ListProperty<String> = objects.listProperty(String::class.java)
36+
val environment: MapProperty<String, Any> = objects.mapProperty(String::class.java, Any::class.java)
3537
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,17 @@ open class OpenApiGeneratorTask : DefaultTask() {
4040
description = OPEN_API_TASK_DESCRIPTION
4141
group = GROUP_NAME
4242
// load my extensions
43-
val extension: OpenApiExtension = project.extensions.run { getByName(EXTENSION_NAME) as OpenApiExtension }
43+
val extension: OpenApiExtension = project.extensions.getByName(EXTENSION_NAME) as OpenApiExtension
4444

4545
// set a default value if not provided
4646
val defaultOutputDir = project.objects.directoryProperty()
47-
defaultOutputDir.set(project.buildDir)
47+
defaultOutputDir.convention(project.layout.buildDirectory.dir("openapi"))
4848

49-
apiDocsUrl.set(extension.apiDocsUrl.getOrElse(DEFAULT_API_DOCS_URL))
50-
outputFileName.set(extension.outputFileName.getOrElse(DEFAULT_OPEN_API_FILE_NAME))
51-
groupedApiMappings.set(extension.groupedApiMappings.getOrElse(emptyMap()))
52-
outputDir.set(extension.outputDir.getOrElse(defaultOutputDir.get()))
53-
waitTimeInSeconds.set(extension.waitTimeInSeconds.getOrElse(DEFAULT_WAIT_TIME_IN_SECONDS))
49+
apiDocsUrl.convention(extension.apiDocsUrl.getOrElse(DEFAULT_API_DOCS_URL))
50+
outputFileName.convention(extension.outputFileName.getOrElse(DEFAULT_OPEN_API_FILE_NAME))
51+
groupedApiMappings.convention(extension.groupedApiMappings.getOrElse(emptyMap()))
52+
outputDir.convention(extension.outputDir.getOrElse(defaultOutputDir.get()))
53+
waitTimeInSeconds.convention(extension.waitTimeInSeconds.getOrElse(DEFAULT_WAIT_TIME_IN_SECONDS))
5454
}
5555

5656
@TaskAction

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ open class OpenApiGradlePlugin : Plugin<Project> {
1818
plugins.apply(SPRING_BOOT_PLUGIN)
1919
plugins.apply(EXEC_FORK_PLUGIN)
2020

21-
extensions.create(EXTENSION_NAME, OpenApiExtension::class.java, this)
21+
extensions.create(EXTENSION_NAME, OpenApiExtension::class.java)
22+
tasks.register(FORKED_SPRING_BOOT_RUN_TASK_NAME, JavaExecFork::class.java)
23+
tasks.register(OPEN_API_TASK_NAME, OpenApiGeneratorTask::class.java)
2224

2325
afterEvaluate { generate(this) }
2426
}
@@ -30,24 +32,24 @@ open class OpenApiGradlePlugin : Plugin<Project> {
3032
// The task, used to run the Spring Boot application (`bootRun`)
3133
val bootRunTask = tasks.named(SPRING_BOOT_RUN_TASK_NAME)
3234
// The task, used to resolve the application's main class (`bootRunMainClassName`)
33-
val bootRunMainClassNameTask = tasks.find { it.name == SPRING_BOOT_RUN_MAIN_CLASS_NAME_TASK_NAME}
34-
?:tasks.named(SPRING_BOOT_3_RUN_MAIN_CLASS_NAME_TASK_NAME)
35+
val bootRunMainClassNameTask = tasks.find { it.name == SPRING_BOOT_RUN_MAIN_CLASS_NAME_TASK_NAME }
36+
?: tasks.named(SPRING_BOOT_3_RUN_MAIN_CLASS_NAME_TASK_NAME)
3537

3638
val extension = extensions.findByName(EXTENSION_NAME) as OpenApiExtension
3739
val customBootRun = extension.customBootRun
3840
// Create a forked version spring boot run task
39-
val forkedSpringBoot = tasks.register(FORKED_SPRING_BOOT_RUN_TASK_NAME, JavaExecFork::class.java) { fork ->
41+
val forkedSpringBoot = tasks.named(FORKED_SPRING_BOOT_RUN_TASK_NAME, JavaExecFork::class.java) { fork ->
4042
fork.dependsOn(bootRunMainClassNameTask)
4143
fork.onlyIf { needToFork(bootRunTask, customBootRun, fork) }
4244
}
4345

4446
// This is my task. Before I can run it, I have to run the dependent tasks
45-
tasks.register(OPEN_API_TASK_NAME, OpenApiGeneratorTask::class.java) {
47+
val openApiTask = tasks.named(OPEN_API_TASK_NAME, OpenApiGeneratorTask::class.java) {
4648
it.dependsOn(forkedSpringBoot)
4749
}
4850

4951
// The forked task need to be terminated as soon as my task is finished
50-
forkedSpringBoot.get().stopAfter = tasks.named(OPEN_API_TASK_NAME)
52+
forkedSpringBoot.get().stopAfter = openApiTask as TaskProvider<Task>
5153
}
5254

5355
private fun Project.springBoot3CompatibilityCheck() {
@@ -75,7 +77,7 @@ open class OpenApiGradlePlugin : Plugin<Project> {
7577

7678
// use original bootRun parameter if the list-type customBootRun properties are empty
7779
workingDir = customBootRun.workingDir.asFile.orNull
78-
?: bootRun.workingDir
80+
?: fork.temporaryDir
7981
args = customBootRun.args.orNull?.takeIf { it.isNotEmpty() }?.toMutableList()
8082
?: bootRun.args?.toMutableList() ?: mutableListOf()
8183
classpath = customBootRun.classpath.takeIf { !it.isEmpty }

0 commit comments

Comments
 (0)