Estou usando SpringBoot 3.4.1, Java 21 e estou tentando gerar classes de servidor Spring (Api mais Modelo).
Tenho esta configuração maven no módulo do projeto do gerador:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.7.0</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.10.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/api-docs.yaml</inputSpec>
<output>${project.build.directory}/generated-sources</output>
<generatorName>spring</generatorName>
<apiPackage>com.api.rest.web.resources</apiPackage>
<modelPackage>com.api.rest.model</modelPackage>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Também escrevi este .yaml
arquivo simples para testar o gerador:
openapi: "3.0.2"
info:
title: Example Rest Archetype
version: 0.0.1
components:
schemas:
User:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
minLength: 3
maxLength: 20
surname:
type: string
minLength: 3
maxLength: 20
username:
type: string
minLength: 3
maxLength: 30
email:
type: string
minLength: 3
maxLength: 30
address:
type: array
items:
$ref: "#/components/schemas/Address"
required:
- name
- surname
- username
Address:
type: object
properties:
id:
type: integer
format: int64
description:
type: string
minLength: 3
maxLength: 20
user:
type: object
$ref: "#/components/schemas/User"
Error:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
required:
- code
- message
É isso. Eu sei que o atributo paths
está faltando, mas quando eu compilo o módulo eu recebo outros dois erros e não entendo o porquê. Este é o resultado:
Errors:
-attribute paths is missing
-attribute components.schemas.Error.properties is not of type `object`
-attribute components.schemas.User.properties is not of type `object`
O que está errado?
Corrigi meu .yaml
arquivo porque usei o editor IntelliJ e provavelmente o erro de recuo foi devido à adição de espaço para formatá-lo como um código aqui. De qualquer forma, perdi a jackson
dependência no meu pom.xml
e certamente isso causou o erro.
Muito obrigado.
Há alguns erros de indentação no seu yaml. Adicionei o que faltava
paths: {}
para habilitar a compilação.Arquivo corrigido
Para gerar anotações Jakarta, adicionei
<useJakartaEe>true</useJakartaEe>
.POM completo