Search Gradle plugins

com.guidedbyte.openapi-modelgen

A comprehensive Gradle plugin for generating Java DTOs from multiple OpenAPI specifications with enhanced features: ## Requirements • Java 17+ • Gradle 8.0+ • OpenAPI Generator 7.14.0+ (automatically managed) ## Features • Multi-spec support with individual task generation • Lombok annotation integration (@Data, @Builder, @SuperBuilder, etc.) • Custom Mustache template support with precedence resolution • Template variable expansion (nested variables like {{currentYear}} in {{copyright}}) • Incremental build support for optimal performance • Configuration validation with detailed error reporting • Parallel template processing for large template sets • Content-based template change detection using SHA-256 hashing ## Usage Examples ### Basic Configuration ```groovy plugins { id 'com.guidedbyte.openapi-modelgen' version '1.0.0' } openapiModelgen { defaults { outputDir "build/generated-sources/openapi" modelNameSuffix "Dto" generateModelTests false validateSpec true } specs { pets { inputSpec "src/main/resources/openapi-spec/pets.yaml" modelPackage "com.example.model.pets" } orders { inputSpec "src/main/resources/openapi-spec/orders.yaml" modelPackage "com.example.model.orders" } } } ``` ### Advanced Configuration ```groovy openapiModelgen { defaults { outputDir "build/generated-sources/openapi" templateDir "src/main/resources/openapi-templates" configOptions([ dateLibrary: "java8", serializationLibrary: "jackson", useBeanValidation: "true", hideGenerationTimestamp: "true" ]) templateVariables([ copyright: "Copyright © {{currentYear}} {{companyName}}", currentYear: "2025", companyName: "My Company Inc." ]) globalProperties([ skipFormModel: "false", generateAliasAsModel: "true" ]) } specs { pets { inputSpec "specs/pets-v1.yaml" modelPackage "com.example.pets.v1.model" configOptions([ additionalModelTypeAnnotations: "@lombok.Data;@lombok.experimental.SuperBuilder" ]) } } } ``` Command Line Options: All configuration options can be overridden via command line: • --model-package=com.example.model • --output-dir=build/custom-output • --template-dir=custom-templates • --model-name-suffix=Entity • --validate-spec • --generate-model-tests • --generate-api-docs Task Generation: • generateOpenApiDtosForPets - Generate DTOs for pets specification • generateOpenApiDtosForOrders - Generate DTOs for orders specification • generateOpenApiDtosAll - Generate DTOs for all specifications Dependencies: The plugin automatically detects and works with any OpenAPI Generator version provided by your configuration management (corporate plugins, etc.). If no version is found, it falls back to the tested default version 7.14.0. The plugin also automatically adds required dependencies including Lombok, Jackson, Spring Boot validation, and JSR-305 annotations. Template Customization: Place custom .mustache templates in your template directory to override plugin defaults. Template resolution follows precedence: user templates > plugin templates > OpenAPI generator defaults. For detailed documentation visit: https://github.com/ryansmith4/openapi-modelgen

https://github.com/ryansmith4/openapi-modelgen

Sources: https://github.com/ryansmith4/openapi-modelgen.git

Version 2.1.0 (latest)

Created 17 September 2025.

# OpenAPI Model Generator Plugin A comprehensive Gradle plugin for generating Java DTOs from OpenAPI specifications with Lombok support, YAML-based template customization, multi-level caching system, and enterprise-grade performance optimizations. Key Features: • Multi-spec support with individual task generation per specification • Thread-safe parallel processing with configurable parallel execution control • Multi-level caching system: session → local → global with 90% faster no-change builds and 70% faster incremental builds • Cross-build performance optimization with global cache persistence • Full Lombok integration with automatic annotation support • YAML-based template customization engine with insertions, replacements, and conditions • Clean template discovery using OpenAPI Generator's official CodegenConfig API • Dynamic generator support - works with any generator from configuration (spring, java, etc.) • Template precedence hierarchy: User templates > User YAML > Plugin YAML > Generator defaults • Partial template override approach - customize only what you need • Incremental build support with selective template processing • Generator directory organization with enforced subdirectory structure • Original template preservation for debugging with saveOriginalTemplates flag • Configuration validation with detailed error reporting • Command-line parameter overrides for all options Requirements: • Java 17+ • Gradle 8.0+ • OpenAPI Generator 7.10.0+ (must be applied by consumer project) Basic Usage: plugins { id 'org.openapi.generator' version '7.11.0' // Or your preferred version 7.10.0+ id 'com.guidedbyte.openapi-modelgen' } openapiModelgen { defaults { parallel true // Enable thread-safe parallel processing (default: true) saveOriginalTemplates false // Save original templates for debugging (default: false) // Template variables - appear in generated code headers templateVariables([ header: "Copyright (c) {{currentYear}} MyCompany", companyName: "MyCompany Inc." ]) } specs { myApi { inputSpec "src/main/resources/api.yaml" modelPackage "com.example.model" // Optional: explicit templates and YAML customizations userTemplateDir "src/main/resources/templates" userTemplateCustomizationsDir "src/main/resources/customizations" } } } Generated Tasks: • generateMyApi - Generate models for specific spec • generateAllModels - Generate models for all specs • generateHelp - Show plugin help and configuration options The plugin includes comprehensive caching with global persistence across builds and thread-safe parallel processing. It provides YAML customizations to enhance code readability while using OpenAPI Generator's official APIs for clean template access. Features dynamic plugin customization discovery, template variable expansion, and saveOriginalTemplates functionality. It automatically detects and works with whatever OpenAPI Generator version you provide (7.10.0+) and integrates seamlessly with corporate dependency management. For detailed documentation and examples visit: <https://github.com/guidedbyte/openapi-modelgen> For comprehensive template system documentation see: <https://github.com/guidedbyte/openapi-modelgen/blob/main/plugin/docs/template-system.md>

Add this plugin to your build using the plugins DSL:

plugins {
  id("com.guidedbyte.openapi-modelgen") version "2.1.0"
}

See also:

  • Adding the plugin to build logic for usage in precompiled script plugins.

    See the relevant documentation for more information.

    Add this plugin as a dependency to <convention-plugins-build>/build.gradle(.kts):

    dependencies {
      implementation("com.guidedbyte.openapi-modelgen:com.guidedbyte.openapi-modelgen.gradle.plugin:2.1.0")
    }
    It can then be applied in the precompiled script plugin:
    plugins {
      id("com.guidedbyte.openapi-modelgen")
    }
  • The legacy method of plugin application. See the relevant documentation for more information.
    buildscript {
      repositories {
        gradlePluginPortal()
      }
      dependencies {
        classpath("com.guidedbyte.openapi-modelgen:com.guidedbyte.openapi-modelgen.gradle.plugin:2.1.0")
      }
    }
    
    apply(plugin = "com.guidedbyte.openapi-modelgen")
  • Applying plugins to all subprojects .