import org.hidetake.gradle.swagger.generator.GenerateSwaggerCode repositories { mavenCentral() } plugins { java id("org.springframework.boot") version "3.3.3" id("io.spring.dependency-management") version "1.1.6" id("org.hidetake.swagger.generator") version "2.19.2" } group = "de.hmmh" version = "0.0.1-SNAPSHOT" java { toolchain { languageVersion = JavaLanguageVersion.of(22) } } configurations { compileOnly { extendsFrom(configurations.annotationProcessor.get()) } } dependencies { //Spring implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.boot:spring-boot-starter-web") runtimeOnly("org.postgresql:postgresql") //Lombok compileOnly("org.projectlombok:lombok") annotationProcessor("org.projectlombok:lombok") //Test testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.boot:spring-boot-testcontainers") testImplementation("org.testcontainers:junit-jupiter") testImplementation("org.testcontainers:postgresql") testRuntimeOnly("org.junit.platform:junit-platform-launcher") //OAS swaggerCodegen("org.openapitools:openapi-generator-cli:7.8.0") implementation("io.swagger.core.v3:swagger-annotations:2.2.22") } swaggerSources { register("pmt") { setInputFile(file("${rootDir}/src/main/resources/api.yml")) code.configFile = file("${rootDir}/src/main/resources/gen-config.json") val validationTask = validation code(delegateClosureOf { language = "spring" components = listOf("models", "apis", "supportingFiles=ApiUtil.java") code.rawOptions = listOf("--ignore-file-override=" + file("${rootDir}/src/main/resources/.codegen-ignore").absolutePath) dependsOn(validationTask) }) } } tasks { processResources { dependsOn(generateSwaggerCode) } withType { useJUnitPlatform() } named("compileJava").configure { dependsOn(swaggerSources.getByName("pmt").code) } } sourceSets { main { java.srcDir("${swaggerSources.getByName("pmt").code.outputDir}/src/main/java") resources.srcDir("${swaggerSources.getByName("pmt").code.outputDir}/src/main/resources") } }