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

如何使用openapi生成器maven插件仅更改一个字段的类型?

危裕
2023-03-14

我有一个模式来描述我从REST服务获得的数据。我不能改变这个计划。架构中有两个格式不同的日期时间类型字段:

"date1": {
    "type": "string",
    "description": "Date 1",
    "format": "date-time"
},
"date2": {
    "type": "string",
    "description": "Date 2",
    "format": "date-time"
}
{
    "date1": "2021-07-29T03:00:00",
    "date2": "2021-04-22T08:25:30.264Z"
}

默认情况下,open api generator maven插件为日期时间类型字段创建OffsetDateTime类型:

    @JsonProperty("date1")
    private OffsetDateTime date1;

    @JsonProperty("date2")
    private OffsetDateTime date2;

使用typeMappings进口Mappings,我可以将OffsetDateTime替换为LocalDateTime:

<typeMappings>
    <typeMapping>OffsetDateTime=LocalDateTime</typeMapping>
</typeMappings>
<importMappings>
    <importMapping>java.time.OffsetDateTime=java.time.LocalDateTime</importMapping>
</importMappings>

但所有领域都会发生这种替代:

    @JsonProperty("date1")
    private LocalDateTime date1;

    @JsonProperty("date2")
    private LocalDateTime date2;

有没有办法将OffsetDateTime替换为LocalDateTime仅用于date1

这就是我想在生成的类中看到的内容:

    @JsonProperty("date1")
    private LocalDateTime date1;

    @JsonProperty("date2")
    private OffsetDateTime date2;

我知道我可以修复生成的类并将OffsetDateTime替换为LocalDateTime,但我不想每次生成后都更改生成的类。

提前感谢。

共有1个答案

郗浩言
2023-03-14

这是我最终得出的解决方案。我正在使用maven replacer插件将OffsetDateTime替换为LocalDateTime:

<replacements>
    <replacement>
        <token>import java.time.OffsetDateTime;</token>
        <value>import java.time.OffsetDateTime;\nimport java.time.LocalDateTime;</value>
    </replacement>
    <replacement>
        <token>OffsetDateTime date1</token>
        <value>LocalDateTime date1</value>
    </replacement>
</replacements>

不是很优雅,但很有效)

 类似资料:
  • 我已经成功地从一个。yaml打开api描述符文件,但正如问题标题中所述,我希望将这些接口的响应类型从ResponseEntity更改为我自己的类型。基本上,接口没有此签名: 对于基本上以这种方式实现的方法: 我希望生成的接口尽可能简单 同样的事情,我自己定义的类,而不是

  • 我们使用openapi生成器maven-plugin版本5.0.1来生成我们的API。我试图指定一个请求,包括一个DTO和一个文件。 第一个奇怪的事情是生成的代码不使用DTO,它基本上是扁平化字段,这样API就期望指定每个字段。然而,我们并不太关心这个问题,因为我们可以指定每个字段(尽管如果它像预期的那样工作会很好)。 杀死我们的问题是为应用编程接口和应用编程接口委托生成的类彼此不一致。生成的AP

  • 不幸的是,SpringFox还不支持OpenAPI3,而且,当我只想将最初的yaml公开为JSON时,使用基于反射的生成器似乎毫无意义。

  • 我试图从我们需要实现的一个招摇过市的文件中生成接口。它是从外部来源提供的。我通常先使用契约,但在java/kotlin中很长一段时间没有这样做。 我已经建立了一个项目,希望尽可能多地控制我的代码。我尝试使用

  • 我尝试使用openapi-Generater-maven-plugin与Spring Boot 2.4.3一起根据Internet上的一些示例,通过openapi.yaml中的规范生成代码,其中没有示例提供包含所需的完整依赖项。该插件生成一个名为的类,该类在内部使用导入的类。 AFAIK这个类不推荐使用class,但我找不到这个新类的存储库。 这是我的POM: 更新后的POM: openapi。指

  • 我正在使用maven Struts2空白工件来创建我的web应用程序。以下是我的pom.xml:- 上面的pom.xml使用jetty服务器创建war文件。因此,当我运行mvn jetty:war-run时,它会创建名为myArtifact-3.war(artifactId-version)的war文件,但我希望我的war文件名为myweb.war。我在pom.xml的配置中使用了war标记来指定