@@ -11,9 +11,11 @@ import io.openapiprocessor.gradle.version.GitHubVersionCheck
1111import io.openapiprocessor.gradle.version.GitHubVersionProvider
1212import io.openapiprocessor.gradle.version.VersionCheck
1313import org.gradle.api.Action
14+ import org.gradle.api.NamedDomainObjectProvider
1415import org.gradle.api.Plugin
1516import org.gradle.api.Project
16- import org.gradle.api.artifacts.Dependency
17+ import org.gradle.api.artifacts.ResolvableConfiguration
18+ import org.gradle.util.GradleVersion
1719import java.io.File
1820
1921/* *
@@ -36,7 +38,7 @@ class OpenApiProcessorPlugin: Plugin<Project> {
3638
3739 private fun addOpenApiProcessorRepository (project : Project ) {
3840 val snapshots = project.findProperty (" openapi-processor-gradle.snapshots" )
39- if (snapshots == null || snapshots != " true" ) {
41+ if (( snapshots == null ) || ( snapshots != " true" ) ) {
4042 project.logger.debug(" openapi-processor: snapshot repository disabled" )
4143 return
4244 }
@@ -65,16 +67,31 @@ class OpenApiProcessorPlugin: Plugin<Project> {
6567 /* *
6668 * Create a 'process{ProcessorName}' task for each configured processor.
6769 */
70+ @Suppress(" UnstableApiUsage" )
6871 fun createProcessingTasks (project : Project , extension : OpenApiProcessorExtension ) {
6972 extension.processors.configureEach(
7073 object : Action <Processor > {
7174 override fun execute (processor : Processor ) {
7275 val name = " process${processor.name.replaceFirstChar { it.uppercase() }} "
7376
77+ val scope = project.configurations.dependencyScope(" ${processor.name} Scope" ) {
78+ fromDependencyCollector(processor.dependencies.process)
79+ }
80+
81+ project.dependencies.add(
82+ scope.name,
83+ " io.openapiprocessor:openapi-processor-api:${Versions .api} " )
84+
85+ val resolvable = project.configurations.resolvable(" ${processor.name} Classpath" ) {
86+ extendsFrom(scope.get())
87+ isCanBeResolved = true
88+ isCanBeConsumed = false
89+ }
90+
7491 project.tasks.register(
7592 name,
7693 OpenApiProcessorTask ::class .java,
77- createTaskBuilderAction(name, processor, extension)
94+ createTaskBuilderAction(processor, extension, resolvable )
7895 )
7996 }
8097 })
@@ -83,8 +100,12 @@ class OpenApiProcessorPlugin: Plugin<Project> {
83100 /* *
84101 * Creates an Action that configures a 'process{ProcessorName}' task from its configuration.
85102 */
86- private fun createTaskBuilderAction (name : String , processor : Processor , extension : OpenApiProcessorExtension ):
87- Action <OpenApiProcessorTask > {
103+ @Suppress(" UnstableApiUsage" )
104+ private fun createTaskBuilderAction (
105+ processor : Processor ,
106+ extension : OpenApiProcessorExtension ,
107+ processorClasspath : NamedDomainObjectProvider <ResolvableConfiguration >
108+ ): Action <OpenApiProcessorTask > {
88109
89110 return object : Action <OpenApiProcessorTask > {
90111 // copy common api path to openapi-processor props if not set
@@ -121,32 +142,12 @@ class OpenApiProcessorPlugin: Plugin<Project> {
121142 task.group = " openapi processor"
122143 task.description = " process openapi with openapi-processor-${processor.name} "
123144
124- copyApiPath (task)
145+ copyApiPath(task)
125146 task.getApiDir().set(project.layout.projectDirectory.dir(getInputDirectory()))
126147 task.getTargetDir().set(project.layout.projectDirectory.dir(getOutputDirectory()))
127148 processor.getMapping()?.let { task.getMapping().set(project.file(it)) }
128149
129- val handler = project.dependencies
130- val dependencies = ArrayList <Dependency >()
131-
132- if (processor.dependencies.isEmpty()) {
133- task.logger.warn (" '${EXTENSION_NAME_DEFAULT } .${name} .processor' not set!" )
134- }
135-
136- dependencies.add (handler.create(" io.openapiprocessor:openapi-processor-api:${Versions .api} " ))
137-
138- processor.dependencies.forEach {
139- dependencies.add (handler.create (it))
140- }
141-
142- val deps = dependencies.toTypedArray()
143- val cfg = project.configurations.detachedConfiguration(* deps)
144-
145- cfg.isCanBeResolved = true
146- cfg.isCanBeConsumed = false
147- cfg.isTransitive = true
148- cfg.description = " the dependencies of the process${name.replaceFirstChar { it.uppercase() }} task."
149- task.getDependencies().from (cfg)
150+ task.getDependencies().from(processorClasspath)
150151 }
151152 }
152153 }
@@ -157,11 +158,12 @@ class OpenApiProcessorPlugin: Plugin<Project> {
157158
158159 companion object {
159160 private fun isSupportedGradleVersion (project : Project ): Boolean {
160- val version: String = project.gradle.gradleVersion
161+ val currentVersion = GradleVersion .current()
162+ val minVersion = GradleVersion .version(" 8.7" )
161163
162- if (version < " 7.0 " ) {
163- project.logger.error (" the current gradle version is $version " )
164- project.logger.error (" openapi-processor-gradle requires gradle 7.0 +" )
164+ if (currentVersion < minVersion ) {
165+ project.logger.error (" the current gradle version is $currentVersion " )
166+ project.logger.error (" openapi-processor-gradle requires gradle $minVersion +" )
165167 return false
166168 }
167169
0 commit comments