我使用OpenAPI生成器maven插件,如下所示,用于为模型生成Java代码。
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
<generatorName>java</generatorName>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>当我生成模型类时,它们是用通常的POJO字段声明和getter和setter生成的。但是,我想要做的是,与生成getter和setter不同,我希望我的类能够使用@Getter、@Setter、@Data等Java的Lombok注释自动生成。有什么方法可以定制模型生成器以适应以上的用例需求?
我想找出是否有办法。我找到了这个讨论,最后一条评论谈到了一个按下,其中讨论了使用Lombok注释生成模型的问题。但是,在OpenAPI生成器开放源码项目中,我没有看到任何关于这个特性的使用或文档的明确指示,它已经实现了。那么,有什么方法可以用Lombok注释而不是常规的getter和setter来生成模型呢?
发布于 2021-04-08 05:53:25
要完成这个非常老的线程:现在,确实支持 Lombok注释。
取自这里的例子
<configOptions>
<additionalModelTypeAnnotations>@lombok.Builder @lombok.NoArgsConstructor @lombok.AllArgsConstructor</additionalModelTypeAnnotations>
</configOptions>发布于 2021-01-15 23:37:42
编辑:这个答案是不推荐的。请看@Laess3r的帖子。我将保留这个,因为它适用于早期版本的openapi生成器。
openapi-generator还不支持Lombok注释。如果要生成带有Lombok注释的代码,则需要在mustache中创建自定义模板,如https://openapi-generator.tech/docs/templating/中所述。
如果您从未使用过mustache,请注意阅读起来有点困难,所以尽量保持模板的简单性,并确保添加单元测试来验证生成的输出。模板将如下所示:
/**
* {{#description}}{{description}}{{/description}}
*/
@Data
public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}} {
{{#vars}}
/**
* {{#description}}{{description}}{{/description}}
*/
@JsonProperty("{{#lambda.lowercase}}{{nameInSnakeCase}}{{/lambda.lowercase}}")
private {{{datatypeWithEnum}}} {{name}};
{{/vars}}发布于 2022-03-22 23:15:25
我已经能够通过使用模型注释的空格分隔列表来实现这一工作:
@lombok.experimental.SuperBuilder @lombok.external.Jacksonized如果模型将readOnly设置为"true“,则生成器将成为创建对象的唯一方法,而@Jacksonized允许将其序列化/反序列化。继承有一些限制(关闭需要configOptions中所有必需的参数)。
https://stackoverflow.com/questions/65733938
复制相似问题