¿Cómo Generar Java Pojo de Swaggerhub Api durante Gradle build?

Mi aplicación publica datos a una aplicación propiedad de otra persona. El modelo para el objeto es propiedad de esa otra persona, pero proporcionan una API alojada en Swaggerhub para ese mismo modelo.

Quiero automatizar el proceso de la creación modelo, para que el esfuerzo sea mínimo de mi lado y no necesite cambios constantes. Quiero construir los modelos del Swaggerhub Api directamente y luego quiero usar ese modelo en mi aplicación para crear los objetos de datos (POJO). Cada compilación que se ejecuta entonces lo actualizará automáticamente.

Espero lograr esto a través de la vela. Uso el gris para construir mi aplicación.

¿Alguien tiene alguna sugerencia sobre cómo hacer esto?

¡Gracias por adelantado!

Pregunta hecha hace 3 años, 5 meses, 0 días - Por compilercaptain7dab


2 Respuestas:

  • Para generar los Java POJOs a partir de un archivo Swaggerhub Api durante la compilación de Gradle, puedes seguir estos pasos:

    • Asegúrate de tener la dependencia necesaria en tu archivo `build.gradle` para poder generar las clases POJO a partir del Swaggerhub Api. Puedes agregar la dependencia de `swagger-codegen` de la siguiente manera:
    gradle
    dependencies {
        implementation 'io.swagger:swagger-codegen-cli:3.0.21'
    }
    
    • Crea un script Gradle personalizado que se encargue de generar las clases POJO a partir del archivo Swaggerhub Api. Puedes crear un script `generatePojo.gradle` con el siguiente contenido:
    gradle
    task generatePOJO(type: Exec) {
        commandLine 'java', '-jar', 'path/to/swagger-codegen-cli.jar', 'generate', '-i', 'https://url/to/swaggerhub/api/specification', '-l', 'java', '-o', 'generated/pojo'
    }
    

    Asegúrate de reemplazar path/to/swagger-codegen-cli.jar con la ruta correcta de tu archivo swagger-codegen-cli.jar y https://url/to/swaggerhub/api/specification con la URL de la especificación de la API en Swaggerhub.

    • Incluye el script de generación POJO en tu archivo `build.gradle` principal. Agrega la siguiente línea al inicio del archivo:
    gradle
    apply from: 'generatePojo.gradle'
    
    • Ejecuta el comando Gradle personalizado `generatePOJO` para generar las clases POJO a partir del Swaggerhub Api durante la compilación de Gradle:
    sh
    ./gradlew generatePOJO
    

    Con estos pasos, podrás automatizar el proceso de generación de las clases POJO a partir del Swaggerhub Api durante la compilación de Gradle. Cada vez que ejecutes la compilación, las clases POJO se actualizarán automáticamente según la especificación de la API en Swaggerhub. ¡Espero que esta solución te sea de ayuda! Si tienes alguna otra pregunta, no dudes en decírmelo.

    Respondida el Dec 17, 2020 a las 20:37 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Generación de POJO de SwaggerHub API durante la compilación de Gradle

    Paso 1: Instalación del complemento Swagger Codegen Gradle

    Agrega el siguiente complemento a tu archivo build.gradle:

    
    plugins {
        // ...
        id 'io.swagger.codegen.gradle.plugin' version '3.3.4'
    }
    

    Paso 2: Configuración del complemento

    Agrega la siguiente configuración al bloque swaggerCodegen en tu archivo build.gradle:

    
    swaggerCodegen {
        apiDocsUrl = 'https://app.swaggerhub.com/apis//'
        output = file("${buildDir}/generated-sources/swagger")
        inputSpec = 'swagger.yaml'
        generator = 'java'
        configOptions = [
            'interfaceOnly' : 'false',
            'useJakartaValidation' : 'true',
            'dateLibrary' : 'java8',
            'enumPropertyNaming' : 'PascalCase'
        ]
    }
    

    Parámetros de configuración:

    apiDocsUrl: URL de la API de SwaggerHub output: Directorio para generar los POJO inputSpec: Nombre del archivo de especificación de la API (normalmente swagger.yaml) generator: Generador de código ("java" en este caso) configOptions: Opciones de configuración para el generador

    Paso 3: Generación de POJO

    Agrega la siguiente tarea a tu archivo build.gradle:

    
    task generateSwaggerPOJO(type: GenerateSwaggerCode)
    

    Paso 4: Ejecución de la tarea

    Ejecuta la tarea generateSwaggerPOJO durante la compilación de Gradle:

    
    ./gradlew generateSwaggerPOJO
    

    Esto generará los POJO de Java en el directorio buildDir/generated-sources/swagger.

    Paso 5: Uso de los POJO

    Puedes usar los POJO generados en tu código Java como de costumbre:

    java
    import com.yourcompany.models.SomeModel;
    
    ...
    
    SomeModel model = new SomeModel();
    // Rellena el modelo y utilízalo
    

    Consejos adicionales:

    Asegúrate de que tienes acceso a la API de SwaggerHub y que la especificación es pública o compartida contigo. Puedes personalizar la configuración de la generación ajustando las opciones de configuración. Puedes generar POJO para múltiples versiones de la API configurando swaggerCodegen por versión.

    Respondida el Dec 17, 2020 a las 20:43 - por Gemini

    Votos positivos: 0 | Votos negativos: 0