micronaut-projects / micronaut-openapi

Generates OpenAPI / Swagger Documentation for Micronaut projects
https://micronaut-projects.github.io/micronaut-openapi/latest/guide/index.html
Apache License 2.0
78 stars 92 forks source link

openapi.properties file not taking into account when using kapt from Micronaut 4.4.0 #1609

Open agartime opened 3 days ago

agartime commented 3 days ago

Expected Behavior

Properties defined under openapi.properties are not populated when using kapt from Micronaut 4.4.0.

I expect openapi to generate the definition yaml file in the path specified under micronaut.openapi.target.file, and not in the default path under META-INF/.

api.version and openapi.title properties are broken too.

Actual Behaviour

micronaut.openapi.target.file property is ignored when is set under openapi.propertiesfile and "io.micronaut.openapi:micronaut-openapi" dependency is declared with kapt:

kapt("io.micronaut.openapi:micronaut-openapi")

Full stacktrace can be seen here:

error: Error finalizing type visitor [io.micronaut.openapi.visitor.OpenApiApplicationVisitor@407e6e29]: Invalid relative name: META-INF/swagger/${openapi.title}-${api.version}.yml
  java.lang.IllegalArgumentException: Invalid relative name: META-INF/swagger/${openapi.title}-${api.version}.yml
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getFileForOutput(JavacFileManager.java:898)

The problem doesn't happen when ksp is used for "io.micronaut.openapi:micronaut-openapi" dependency, or when using micronaut < 4.4.0.

Steps To Reproduce

  1. git clone https://github.com/agartime/issue-openapi-kapt-micronaut-4.5
  2. cd issue-openapi-kapt-micronaut-4.5
  3. ./gradlew clean build

Environment Information

Example Application

https://github.com/agartime/issue-openapi-kapt-micronaut-4.5

Version

4.5.0

altro3 commented 2 days ago

Can't reproduce it with your sample. That's my logs after gradle build:

15:50:11: Executing 'clean build'...

Starting Gradle Daemon...
Gradle Daemon started in 960 ms
> Task :clean
> Task :checkKotlinGradlePluginConfigurationErrors
> Task :writeJitAOTConfig
> Task :writeNativeAOTConfig
> Task :inspectRuntimeClasspath
> Task :kspKotlin
> Task :processResources
> Task :kaptGenerateStubsKotlin

> Task :kaptKotlin
Note: Generating OpenAPI Documentation
Note: Writing OpenAPI file to destination: D:\Work\contrib\issue-openapi-kapt-micronaut-4.5\openapi-definition.yml
Note: Writing OpenAPI views to destination: D:\Work\contrib\issue-openapi-kapt-micronaut-4.5\build\tmp\kapt3\classes\main\META-INF\swagger\views

> Task :compileKotlin
> Task :compileJava NO-SOURCE
> Task :classes
> Task :runnerJar
> Task :buildLayers
> Task :jar
> Task :startScripts
> Task :distTar
> Task :distZip

> Task :prepareJitOptimizations
15:50:26.247 [main] INFO  i.m.aot.MicronautAotOptimizer - Analysis will be performed with active environments: []

> Task :mergeServiceFilesForOptimizedJitJar
> Task :optimizedJitJar
> Task :optimizedRunnerJitJar
> Task :optimizedBuildLayers
> Task :createOptimizedStartScripts
> Task :optimizedDistTar
> Task :optimizedDistZip
> Task :optimizedJitJarAll

> Task :prepareNativeOptimizations
15:50:32.342 [main] INFO  i.m.aot.MicronautAotOptimizer - Analysis will be performed with active environments: []

> Task :mergeServiceFilesForOptimizedNativeJar
> Task :optimizedNativeJar
> Task :shadowJar
> Task :startShadowScripts
> Task :shadowDistTar
> Task :shadowDistZip
> Task :assemble
> Task :kspTestKotlin
> Task :processTestResources
> Task :kaptGenerateStubsTestKotlin
> Task :kaptTestKotlin
> Task :compileTestKotlin
> Task :compileTestJava NO-SOURCE
> Task :testClasses
> Task :test
> Task :check
> Task :build

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.8/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 32s
38 actionable tasks: 38 executed
15:50:44: Execution finished 'clean build'.

изображение