plugins { id 'java' id 'org.springframework.boot' version '2.7.2' id 'io.openapiprocessor.openapi-processor' version '2022.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'com.github.jk1.dependency-license-report' version '2.1' id "org.owasp.dependencycheck" version "7.1.1" id "com.diffplug.spotless" version "6.9.0" } group = 'net.hostsharing' version = '0.0.1-SNAPSHOT' wrapper { distributionType = Wrapper.DistributionType.BIN gradleVersion = '7.5' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } ext { set('testcontainersVersion', "1.17.3") } // wrapper dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-rest' implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springdoc:springdoc-openapi-ui:1.6.9' implementation 'org.liquibase:liquibase-core' implementation 'com.vladmihalcea:hibernate-types-55:2.17.1' implementation 'org.openapitools:jackson-databind-nullable:0.2.3' implementation 'org.modelmapper:modelmapper:3.1.0' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.testcontainers:testcontainers' testImplementation 'org.testcontainers:junit-jupiter' testImplementation 'org.testcontainers:postgresql' testImplementation 'com.tngtech.archunit:archunit-junit5:1.0.0-rc1' testImplementation 'io.rest-assured:spring-mock-mvc' } dependencyManagement { imports { mavenBom "org.testcontainers:testcontainers-bom:${testcontainersVersion}" } } tasks.withType(JavaCompile) { options.compilerArgs += ["-parameters"] } tasks.named('test') { useJUnitPlatform() } openapiProcessor { spring { processor 'io.openapiprocessor:openapi-processor-spring:2022.4' apiPath "$projectDir/src/main/resources/api-definition.yaml" targetDir "$projectDir/build/generated/sources/openapi" mapping "$projectDir/src/main/resources/api-mappings.yaml" showWarnings true openApiNullable true } } sourceSets.main.java.srcDir 'build/generated/sources/openapi' project.tasks.processResources.dependsOn('processSpring') project.tasks.compileJava.dependsOn('processSpring') spotless { java { // removeUnusedImports() TODO: reactivate once it can deal with multi-line-strings indentWithSpaces(4) endWithNewline() toggleOffOn() target fileTree(rootDir) { include '**/*.java' exclude '**/generated/**/*.java' } } } project.tasks.check.dependsOn(spotlessCheck) dependencyCheck { cveValidForHours=4 format = 'ALL' suppressionFile = 'etc/owasp-dependency-check-suppression.xml' failOnError = true failBuildOnCVSS = 7 } project.tasks.check.dependsOn(dependencyCheckAnalyze) licenseReport { excludeBoms = true allowedLicensesFile = new File("$projectDir/etc/allowed-licenses.json") } project.tasks.check.dependsOn(checkLicense)