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.23" 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" configDirectory = file("src/main/resources/") 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") implementation("org.springframework.boot:spring-boot-starter-security") implementation("org.springframework.boot:spring-boot-starter-oauth2-client") implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server") // Postgres 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.springframework.security:spring-security-test") testImplementation("org.testcontainers:junit-jupiter") testImplementation("org.testcontainers:postgresql") testRuntimeOnly("com.h2database:h2") 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") implementation("jakarta.xml.bind:jakarta.xml.bind-api") //Needed for XML/HTML Validation } swaggerSources { register("pmt") { setInputFile(file("${rootDir}/api/pmt.yml")) code.configFile = file("${rootDir}/gen/config-pmt.json") val validationTask = validation code(delegateClosureOf { language = "spring" code.rawOptions = listOf("--ignore-file-override=" + file("${rootDir}/gen/.ignore-pmt").absolutePath) dependsOn(validationTask) }) } create("employee") { setInputFile(file("${rootDir}/api/employee.yml")) code.configFile = file("${rootDir}/gen/config-employee.json") code(delegateClosureOf { language = "java" }) } } 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) dependsOn(swaggerSources.getByName("employee").code) } } sourceSets { main { java.srcDir("${swaggerSources.getByName("pmt").code.outputDir}/src/main/java") resources.srcDir("${swaggerSources.getByName("pmt").code.outputDir}/src/main/resources") java.srcDir("${swaggerSources.getByName("employee").code.outputDir}/src/main/java") resources.srcDir("${swaggerSources.getByName("employee").code.outputDir}/src/main/resources") } }