openapi生成器maven插件用@QueryMap打破旧的伪装

openapi生成器maven插件用@QueryMap打破旧的伪装,maven,swagger,swagger-codegen,feign,openapi-generator,Maven,Swagger,Swagger Codegen,Feign,Openapi Generator,使用swagger codegen maven插件v2.2.2生成的代码可以很好地为Faign生成代码,不幸的是,我被迫使用openapi生成器maven插件或swagger codegen maven插件(v2.2.14)。当该生成器使用具有可选参数的方法处理模式时,它们使用注释@QueryMap(encoded=true)的一个映射参数复制该方法。 例如: 旧版本的外文库没有@QueryMap.encoded,因此java代码的提交失败。我没有机会升级外文库,所以我不想禁用这个代码生成器的功

使用swagger codegen maven插件v2.2.2生成的代码可以很好地为Faign生成代码,不幸的是,我被迫使用openapi生成器maven插件或swagger codegen maven插件(v2.2.14)。当该生成器使用具有可选参数的方法处理模式时,它们使用注释@QueryMap(encoded=true)的一个映射参数复制该方法。 例如:


旧版本的外文库没有@QueryMap.encoded,因此java代码的提交失败。我没有机会升级外文库,所以我不想禁用这个代码生成器的功能,但找不到任何开关。有人可以关闭这个恼人的功能吗?

您可以自定义Java外语生成器的模板以删除
QueryMap
,然后使用自定义模板和
-t
CLI选项生成代码。我在这里找到源模板:看起来很难看,但可以克隆和修复
/**
   * Note, this is equivalent to the other <code>someMethod</code> method,
   * but with the query parameters collected into a single Map parameter. This
   * is convenient for services with optional query parameters, especially when
   * used with the {@link ApiV1CodesGetQueryParams} class that allows for
   * building up this map in a fluent style.
   * @param queryParams Map of query parameters as name-value pairs
   *   <p>The following elements may be specified in the query map:</p>
   *   <ul>
   *   <li>p1 - param1 (optional)</li>
   *   <li>p2 - param2 (optional)</li>
   *   </ul>

   */
  @RequestLine("GET /api/v1/someMethod?p1={p1}&p2={p2}")
  @Headers({
  "Accept: application/json",
  })
  Response  someMethod(@QueryMap(encoded=true) Map<String, Object> queryParams);