当前位置: 首页 > 知识库问答 >
问题:

使用swagger-codemen maven插件生成代码时删除默认实现

缑智敏
2023-03-14

我必须从yaml文件生成代码,在我的swagger maven插件中,我放了:

<configOptions>
  <java8>true</java8>
  <sourceFolder>src/main/java</sourceFolder>
  <interfaceOnly>true</interfaceOnly>
  <dateLibrary>java8</dateLibrary>
  <singleContentTypes>true</singleContentTypes>
</configOptions>

即使上面写的是“只有面对面”

@ApiOperation(value = "", nickname = "billetsFichiersHealthGet", notes = "Obtient l'état de santé de l'API. ", tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK"),
        @ApiResponse(code = 200, message = "Erreur", response = Error.class) })
    @RequestMapping(value = "/bills/health",
        produces = "application/json", 
        consumes = "",
        method = RequestMethod.GET)
    default ResponseEntity<Void> billetsFichiersHealthGet() {
        if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
        } else {
            log.warn("ObjectMapper or HttpServletRequest not configured in default BilletsApi interface so no example is generated");
        }
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
    }

我怎样才能禁用默认接口方法的生成,而只在接口中定义而不是默认实现。

当我删除以下两个标签它的工作原理

<java8>true</java8> 
<dateLibrary>java8</dateLibrary>

然而,我的模型使用的是localdatetime,所以我应该使用java8,不能真正删除这两个标记

有什么想法吗?

共有3个答案

章青青
2023-03-14

如果需要LocalDateTime支持,并且不需要默认方法实现,则可以使用以下技巧:

<configuration>
    ...
    <typeMappings>
        <typeMapping>date=LocalDate</typeMapping>
        <typeMapping>date-time=LocalDateTime</typeMapping>
    <typeMappings>
    <importMappings>
        <importMapping>LocalDate=java.time.LocalDate</importMapping>
        <importMapping>LocalDateTime=java.time.LocalDateTime</importMapping>
    </importMappings>
    <configOptions>
        <interfaceOnly>true</interfaceOnly>
        <dateLibrary>legacy</dateLibrary>
    </configOptions>
<configuration>

使用遗留dateLibrary不包括默认方法,但可以手动将日期映射为java8日期格式。它适用于swagger codegen插件3.0.18。

请注意,请说明

<dateLibrary>java8</dateLibrary>
<defaultInterfaces>false</defaultInterfaces>

将避免默认实现,但会导致API中的冗余方法(如getRequest()getObjectMapper()等)。

柴彬
2023-03-14

在openapi插件版本4.1.2中,将java8设置为false,但dateGallery设置为java8可以做到这一点

<java8>false</java8> 
<dateLibrary>java8</dateLibrary>
颜祖鹤
2023-03-14

请尝试:

<configOptions>
    <dateLibrary>java8</dateLibrary>
    <java8>true</java8>
    <defaultInterfaces>false</defaultInterfaces>
</configOptions>

https://github.com/swagger-api/swagger-codegen/issues/8833

 类似资料:
  • 我使用swagger-codigen-2.1.6和成功生成序列化模型类通过swagger-codigen-maven-plugin使用序列化模型配置选项。但是,我没有看到序列VersionUID添加到类中,也找不到任何留档来包含它。任何帮助都将不胜感激。提前感谢。

  • 我正在努力创建rest客户端,我将调用一个API来提供这个大的json输出。我想知道如何通过输入这个json来自动创建Pojo类来晃动代码gen,并让它为我创建我的pojo类,这将节省手动时间。这是我尝试过的 要为生成PHP客户端,请执行以下操作:http://petstore.swagger.io/v2/swagger.json,请运行以下命令: (如果您使用的是Windows,请将最后一个命令

  • 我需要在eclipse中使用with swagger codegen插件(用于maven)生成服务器存根代码。你能帮我怎么做吗?以及需要什么配置(在pom.xml中)。

  • 我创建了一个管道,它从CodeCommit存储库获取代码,通过CodeBuild构建代码,并将代码推送到S3存储桶中。 对于我的代码构建,我使用的是AWS管理的映像。aws/codebuild/nodejs:7.0。0 如果我通过CodeBuild控制台手动启动构建并指定存储库,则在buildspec中运行以下命令时会获得存储库URL 但是如果代码构建是由推送到存储库自动触发的。CODEBUILD

  • 我寻找一些配置,我可以改变接口的名称,已生成,但没有找到解决方案。 对此有什么想法吗??

  • 问题内容: 我在Spring Boot的应用程序中添加了一个自定义的Security Config,但是有关“使用默认安全密码”的消息仍在LOG文件中。 有什么要删除的吗?我不需要此默认密码。看来Spring Boot无法识别我的安全策略。 问题答案: 我找到了关于排除 SecurityAutoConfiguration 类的解决方案。 例: