swagger-core icon indicating copy to clipboard operation
swagger-core copied to clipboard

`openApiFile` property of `ResolveTask` in Gradle plugin doesn't support lazy configuration and task dependency inference

Open erdi opened this issue 2 years ago • 2 comments

Some properties of ResolveTask, like for example classpath or buildClasspath support lazy configuration and task dependency inference because their type allows assigning a FileCollection which supports these Gradle features. Unfortunately it's not the case for openApiFile which uses File as the type. RegularFileProperty has been introduced in Gradle 4.3 which if used as the type for openApiFile would allow to lazy configure it and infer task dependencies.

In my case I'm generating the config file using another task so I would like to be able to do

val generateSwaggerConfig = tasks.register<GenerateSwaggerFile>("generateSwaggerConfig") {
    configFile.set(layout.buildDirectory.file("${name}/config.yaml")) // configFile is a RegularFileProperty
}

tasks.named<ResolveTask>("resolve") {
    openApiFile.set(generateSwaggerConfig.map { it.configFile })
}

which would allow Gradle to infer that to run resolve it needs to run generateSwaggerConfig first.

Please let me know if you are accepting PRs as I'd like to contribute a hopefully backwards change with this enhancement.

erdi avatar Feb 21 '23 15:02 erdi