openapi-generator maven 插件生成带有非标准注释的 java 类,例如:@javax.annotation.Nonnull

问题描述 投票:0回答:1

openapi-generator maven 插件生成的 Java 类表现出一个值得注意的问题:

使用非标准注释,例如

@javax.annotation.Nonnull
@javax.annotation.Nullable
中的
com.google.code.findbugs:jsr305:3.0.2

重现步骤:

  • 为您的模型编写 OpenApi 规范
  • 使用
    openapi-generator-maven-plugin
    版本7.5.0
  • 生成java类

OpenAPI声明文件:

{
  "openapi": "3.1.0",
  "info": {
    "title": "Sample contract",
    "version": "1.0.0"
  },
  "paths": {},
  "components": {
    "schemas": {
      "Request": {
        "type": "object",
        "required": ["token"],
        "properties": {
          "token": {
            "type": "string"
          }
        }
      }
    }
  }
}

生成的java类:

package com.sample;

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.StringJoiner;
import java.util.Objects;
import java.util.Map;
import java.util.HashMap;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Arrays;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import javax.validation.constraints.*;
import javax.validation.Valid;


/**
 * Request
 */
@JsonPropertyOrder({
  Request.JSON_PROPERTY_TOKEN
})
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2024-04-23T12:47:19.320030+02:00[Europe/Madrid]", comments = "Generator version: 7.5.0")
public class Request {
  public static final String JSON_PROPERTY_TOKEN = "token";
  private String token;

  public Request() { 
  }

  public Request token(String token) {
    this.token = token;
    return this;
  }

   /**
   * Get token
   * @return token
  **/
  @javax.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_TOKEN)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getToken() {
    return token;
  }


  @JsonProperty(JSON_PROPERTY_TOKEN)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setToken(String token) {
    this.token = token;
  }

  
}

如您所见,生成的类使用

@javax.annotation.Nonnull
,这是一个非标准类,必须使用非标准依赖项引入,例如:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>jsr305</artifactId>
  <version>3.0.2</version>
</dependency>

理想情况下,类不应包含该注释或使用标准注释。

我的问题是:有没有办法删除这些注释或使用包含它们的标准库?

java openapi-generator jsr305
1个回答
0
投票

解决方案可以使用以下依赖项:

        <dependency>
            <groupId>io.swagger.parser.v3</groupId>
            <artifactId>swagger-parser</artifactId>
            <version>2.1.22</version>
        </dependency>

但我认为仅仅两个注释就带来了很多垃圾

© www.soinside.com 2019 - 2024. All rights reserved.