ProjectManagmentTool/build.gradle.kts

153 lines
4.6 KiB
Text
Raw Normal View History

2024-09-12 22:54:02 +00:00
import com.github.spotbugs.snom.Confidence
import com.github.spotbugs.snom.Effort
import com.github.spotbugs.snom.SpotBugsTask
2024-09-12 22:01:00 +00:00
import org.hidetake.gradle.swagger.generator.GenerateSwaggerCode
2024-09-27 14:07:03 +00:00
import org.openapitools.codegen.languages.JavaClientCodegen
2024-09-12 22:01:00 +00:00
repositories {
mavenCentral()
}
plugins {
java
2024-09-12 22:23:47 +00:00
checkstyle
id("com.github.spotbugs") version "6.0.23"
2024-09-12 22:01:00 +00:00
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"
2024-09-27 14:07:03 +00:00
id("org.openapi.generator") version "7.8.0"
2024-09-12 22:01:00 +00:00
}
2024-09-12 22:23:47 +00:00
checkstyle {
toolVersion = "10.12.4"
configDirectory = file("src/main/resources/")
2024-09-12 22:23:47 +00:00
configFile = file("src/main/resources/checkstyle.xml")
}
2024-09-12 22:54:02 +00:00
spotbugs {
2024-09-27 14:07:03 +00:00
toolVersion = "4.8.6"
2024-09-12 22:54:02 +00:00
effort.set(Effort.MAX)
reportLevel.set(Confidence.LOW)
}
2024-09-12 22:01:00 +00:00
group = "de.hmmh"
version = "0.0.1-SNAPSHOT"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
2024-09-12 22:01:00 +00:00
}
}
configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
}
dependencies {
// Spring
2024-09-12 22:01:00 +00:00
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
2024-09-12 22:01:00 +00:00
runtimeOnly("org.postgresql:postgresql")
2024-09-12 22:54:02 +00:00
// Lombok
2024-09-12 22:01:00 +00:00
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
2024-09-12 22:54:02 +00:00
// Test
2024-09-12 22:01:00 +00:00
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.boot:spring-boot-testcontainers")
testImplementation("org.springframework.security:spring-security-test")
2024-09-12 22:01:00 +00:00
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")
2024-09-12 22:01:00 +00:00
implementation("io.swagger.core.v3:swagger-annotations:2.2.22")
implementation("jakarta.xml.bind:jakarta.xml.bind-api") //Needed for XML/HTML Validation
2024-09-12 22:01:00 +00:00
}
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<GenerateSwaggerCode> {
language = "spring"
2024-09-12 22:54:02 +00:00
code.rawOptions =
listOf("--ignore-file-override=" + file("${rootDir}/src/main/resources/.codegen-ignore").absolutePath)
2024-09-12 22:01:00 +00:00
dependsOn(validationTask)
})
}
}
2024-09-27 14:07:03 +00:00
openApiGenerate {
remoteInputSpec = "https://employee.szut.dev/v3/api-docs.yaml"
apiPackage = "ignored"
modelPackage = "ignored"
invokerPackage = "de.hmmh.pmt.employee"
groupId = "de.hmmh"
packageName = "de.hmmh.pmt"
generatorName = "java"
generateModelTests = false
generateApiTests = false
generateApiDocumentation = false
generateModelDocumentation = false
library = JavaClientCodegen.RESTTEMPLATE
ignoreFileOverride.set(".openapi-generator-java-sources.ignore")
configOptions.putAll(
mapOf(
JavaClientCodegen.GENERATE_CLIENT_AS_BEAN to "true",
JavaClientCodegen.ANNOTATION_LIBRARY to "swagger2",
JavaClientCodegen.OPENAPI_NULLABLE to "false",
JavaClientCodegen.PERFORM_BEANVALIDATION to "true",
JavaClientCodegen.USE_BEANVALIDATION to "true",
JavaClientCodegen.USE_JAKARTA_EE to "true",
)
)
}
2024-09-12 22:01:00 +00:00
tasks {
2024-09-12 22:54:02 +00:00
withType<Checkstyle> {
reports {
xml.required.set(true)
html.required.set(false)
}
}
withType<SpotBugsTask> {
2024-09-27 14:07:03 +00:00
2024-09-12 22:54:02 +00:00
excludeFilter.set(file("${rootDir}/src/main/resources/spotbugs-exclude.xml"))
}
2024-09-12 22:01:00 +00:00
processResources {
dependsOn(generateSwaggerCode)
2024-09-27 14:07:03 +00:00
dependsOn(openApiGenerate)
2024-09-12 22:01:00 +00:00
}
withType<Test> {
useJUnitPlatform()
}
named("compileJava").configure {
dependsOn(swaggerSources.getByName("pmt").code)
2024-09-27 14:07:03 +00:00
dependsOn(openApiGenerate)
2024-09-12 22:01:00 +00:00
}
}
sourceSets {
main {
java.srcDir("${swaggerSources.getByName("pmt").code.outputDir}/src/main/java")
resources.srcDir("${swaggerSources.getByName("pmt").code.outputDir}/src/main/resources")
2024-09-27 14:07:03 +00:00
java.srcDir("${openApiGenerate.outputDir}/src/main/java")
2024-09-12 22:01:00 +00:00
}
}