如何在 swagger-maven-plugin 3.1.0 中设置覆盖模型

How to set overriding models in swagger-maven-plugin 3.1.0

如何在 swagger-maven-plugin 3.1.0 和 Swagger UI 2.0(或更新版本)中设置覆盖模型?

最近我们将 Swagger UI 从 1.2 升级到 2.0,并将 swagger-maven-plugin 从 2.3 升级到 3.1.0。

看来,swagger-maven-plugin 版本 3.1.0 缺少 overridingModels 选项,它出现在 2.3 版中。

该选项使我们能够为某些数据类型自定义模式描述,如中所述:https://github.com/swagger-api/swagger-core/wiki/overriding-models

以下是我最终解决问题的方法(我使用的是 swagger-maven-plugin 版本 3.1.1):

假设您要将 java.util.Date 映射为这个任意结构:

{
  "year": "string",
  "month": "string",
  "day": "string"
}

第 1 步:创建一个 class 描述上述模型:

package com.example;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@ApiModel
public class MyDate {

    @ApiModelProperty
    public String year;

    @ApiModelProperty
    public String month;

    @ApiModelProperty
    public String day;
}

注意:class 名称和包名称是任意的,它们只需要在 class 路径上,所以 class 和其他插件一样可见你的模型。

第 2 步:在 pom.xml 中将此行添加到 swagger-maven-plugin 的配置中:

<plugin>
  <groupId>com.github.kongchen</groupId>
  <artifactId>swagger-maven-plugin</artifactId>
  <version>3.1.1</version>
  <configuration>
    <apiSources>
      <apiSource>
        ...
        <modelSubstitute>/model-substitute.csv</modelSubstitute>
      </apiSource>
    </apiSources>
  </configuration>
  ...
</plugin>

第 3 步:使用以下映射创建文件 model-substitute.csv

java.util.Date : com.example.MyDate

将文件放在与插件相同的 maven 模块中,目录 src/main/resources.
注意:文件的名称是任意的,但它应该与 pom.xml.

中的值匹配

NullPointerException 可能是因为您没有 src/main/resources 中的文件。这在 3.1.7 版本

中对我有用