build.gradle.kts - 如何正确设置编译器参数?

build.gradle.kts - how to set compiler args correctly?

得到以下内容:

val commonCompilerArgs = listOfNotNull(
    "-Dmicronaut.openapi.views.spec=rapidoc.enabled=true,swagger-ui.enabled=true,swagger-ui.theme=flattop",
)




tasks {
    compileKotlin {
        kotlinOptions {
            jvmTarget = "11"
            freeCompilerArgs = commonCompilerArgs
        }
    }
    compileTestKotlin {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
}

但是出现这个错误:

无效参数:-Dmicronaut.openapi.views.spec=rapidoc.enabled=true,swagger-ui.enabled=true,swagger-ui.theme=flattop

我想这很简单,但我不知道如何正确设置这个编译器参数。

感谢任何帮助!

如果您在 Micronaut 应用程序 gradle 脚本中使用 kapt,那么您可以这样设置它:

kapt {
    arguments {
        arg(
            "micronaut.openapi.views.spec",
            "rapidoc.enabled=true,swagger-ui.enabled=true,swagger-ui.theme=flattop"
        )
    }
}

打开API定义文件和SwaggerUI是在注解处理阶段生成的,会生成源代码和资源文件。意思是在compileKotlin任务之前。

示例构建输出的一部分:

...
> Task :my-app:kaptGenerateStubsKotlin
> Task :my-app:processResources
> Task :my-app:detekt
> Task :my-app:processTestResources NO-SOURCE
> Task :my-app:kaptKotlin
Note: Generating OpenAPI Documentation
Note: Writing OpenAPI YAML to destination: /home/me/prj/my-app/backend/build/tmp/kapt3/classes/main/META-INF/swagger/my-app-1.0.yml
Note: Writing OpenAPI View to destination: /home/me/prj/my-app/backend/build/tmp/kapt3/classes/main/META-INF/swagger/views/swagger-ui/index.html
Note: Creating bean classes for 9 type elements

> Task :my-app:compileKotlin
> Task :my-app:compileJava NO-SOURCE
> Task :my-app:classes
...

更新: 您还必须将 Swagger 的 micronaut.router.static-resources 部分添加到 application.yaml 配置文件映射 swagger 静态路由,如下所示:

micronaut:
  router:
    static-resources:
      swagger:
        paths: classpath:META-INF/swagger
        mapping: /swagger/**
      swagger-ui:
        paths: classpath:META-INF/swagger/views/swagger-ui
        mapping: /swagger-ui/**

然后您可以在 http://localhost:8080/swagger/my-app-1.0.yml 上访问 OpenAPI 定义文件,Swagger UI 应该可以在 http: //本地主机:8080/swagger-ui .