Java 合并模式招摇过市UI Micronaut

Java 合并模式招摇过市UI Micronaut,java,swagger,swagger-ui,micronaut,micronaut-client,Java,Swagger,Swagger Ui,Micronaut,Micronaut Client,我正在尝试合并micronaut swagger UI中的附加文件模式。我认为该文件在构建期间没有被拾取,不确定如何为附加文件设置正确的路径 在资源内部存在附加文件 在application.yml配置中,我设置了以下配置 micronaut: openapi: additional: files= src/main/resources/swagger/swaggerSecuritySchemes.yml swaggerSecuritySchemes.yml secu

我正在尝试合并micronaut swagger UI中的附加文件模式。我认为该文件在构建期间没有被拾取,不确定如何为附加文件设置正确的路径

在资源内部存在附加文件

在application.yml配置中,我设置了以下配置

micronaut:
  openapi:
    additional:
      files= src/main/resources/swagger/swaggerSecuritySchemes.yml
swaggerSecuritySchemes.yml

securitySchemes:
  Open Id Connect:
    type: oauth2
    flows:
      authorizationCode:
        authorizationUrl: https://falconidentityserver.azurewebsites.net/connect/authorize
        tokenUrl: https://falconidentityserver.azurewebsites.net/connect/token
        refreshUrl: ""
        scopes:
          openid: Open Id scope
          profile: Name scope
          email: Email scope
        usePkceWithAuthorizationCodeGrant: true
在buildswagger-yml文件中,这些配置不存在,我认为在构建过程中没有选择该文件,我们如何设置附加文件的路径

来自micronaut文档

micronaut.openapi.additional.files={project.home}/src/test/resources/swagger
什么是project.home

我在build.gradle文件中尝试了以下代码,但它没有合并其他文件中的任何内容

tasks.withType(JavaCompile).all {
    options.fork = true
    options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=swagger-ui.enabled=true,swagger-ui.theme=MATERIAL'
    options.forkOptions.jvmArgs << '-Dmicronaut.openapi.additional.files=src/main/resources/swagger'
    options.compilerArgs += ['--enable-preview']
}

包括上述定义合并了配置,但是在最终文档中,clientIdclientSecretusePkceWithAuthorizationCodeGrant未合并,为什么?

如文档所述,顺序如下:

要配置其他招摇过市文件的路径,需要设置系统属性micronaut.openapi.additional.files

micronaut.openapi.additional.files
应作为构建的系统属性添加,因为openapi文档是在构建/编译时生成的,而不是在运行时生成的,因此将此属性添加到
application.yml
(运行时)配置将无效

格拉德尔: 如果您使用的是gradle,则可以添加此
micronaut.openapi.additional.files
属性:

  • 要在启动生成时创建命令行系统属性,请执行以下操作:

    $ ./gradlew build -Dmicronaut.openapi.additional.files=src/main/resources/swagger
    
    $ mvn clean compile -Dmicronaut.openapi.additional.files=src/main/resources/swagger
    
  • 到您的项目gradle.properties,从而避免在每次生成时添加系统属性:

    systemProp.micronaut.openapi.additional.files=src/main/resources/swagger
    
    <properties>
        <micronaut.openapi.additional.files>src/main/resources/swagger</micronaut.openapi.additional.files>
    </properties>
    
马文: 如果您使用的是maven,则可以添加
micronaut.openapi.additional.files
属性:

  • 要在启动生成时创建命令行系统属性,请执行以下操作:

    $ ./gradlew build -Dmicronaut.openapi.additional.files=src/main/resources/swagger
    
    $ mvn clean compile -Dmicronaut.openapi.additional.files=src/main/resources/swagger
    
  • 将pom.xml作为项目属性添加到项目描述符中,从而避免在每次生成时添加系统属性:

    systemProp.micronaut.openapi.additional.files=src/main/resources/swagger
    
    <properties>
        <micronaut.openapi.additional.files>src/main/resources/swagger</micronaut.openapi.additional.files>
    </properties>
    
    
    src/main/resources/swagger
    
旁注 请注意,在这两种构建工具配置中,
micronaut.openapi.additional.files
属性指向的是目录路径(src/main/resources/swagger),而不是文件路径,因为文档没有提到此属性将目录而不是显式文件作为其值


据我所知,附加文件不支持
securitySchemes
声明,只会合并
路径
文档。但我可能错过了一些细节,或者可以在micronaut openapi存储库中随意查看。

这对我来说很有效,请尝试以下方法:

步骤1:在根目录中创建一个名为
openapi
的文件夹

步骤2:然后在openapi文件夹中手动创建yml,并根据
(openapi规范)
在文件中提及您的
模式

步骤3:现在将这两个文件与生成的OpenAPI定义合并。您需要指向Micronaut以在OpenAPI文件夹中查找其他
OpenAPI
yaml文件。因此,您需要设置属性micronaut.openapi.additional.files

要将micronaut指向openapi文件夹:

步骤1:在根目录中查找
openapi.properties
文件。如果文件不存在,请创建一个

步骤2:一旦我们有了文件,就将其粘贴到文件->
micronaut.openapi.additional.files=openapi

确认:确认micronaut在此过程后是否正在合并文件。服务器启动时请注意日志

如果流程成功,您应该能够看到以下内容:-

Note: Merging Swagger OpenAPI YAML files from location: whateverDirectory/openapi
Note: Reading Swagger OpenAPI YAML file YourFileName.yml

感谢您提供的信息,我厌倦了options.forkOptions.jvmArgs,我认为路径对我不起作用…..这是存储库Hey@SanJaisy,请您更新您的线程以提及编辑帖子答案,以允许增量信息更新。请您也添加编译输出,好吗?您也记下我关于*securitySchemes*的笔记了吗?据我所知,答案应该是可以接受的,因为问题在于yaml文件内容。