import com.github.spotbugs.snom.Confidence import com.github.spotbugs.snom.Effort import com.github.spotbugs.snom.SpotBugsTask import org.hidetake.gradle.swagger.generator.GenerateSwaggerCode repositories { mavenCentral() } plugins { java checkstyle id("com.github.spotbugs") version "6.0.22" 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" } checkstyle { toolVersion = "10.12.4" configFile = file("src/main/resources/checkstyle.xml") } spotbugs { toolVersion = "4.8.6" effort.set(Effort.MAX) reportLevel.set(Confidence.LOW) } group = "de.hmmh" version = "0.0.1-SNAPSHOT" java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } 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("io.swagger.codegen.v3:swagger-codegen-cli:3.0.61") 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") code.rawOptions = listOf("--ignore-file-override=" + file("${rootDir}/src/main/resources/.codegen-ignore").absolutePath) dependsOn(validationTask) }) } } tasks { withType { reports { xml.required.set(true) html.required.set(false) } } withType { excludeFilter.set(file("${rootDir}/src/main/resources/spotbugs-exclude.xml")) } 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") } }