124 lines
3.4 KiB
Groovy
124 lines
3.4 KiB
Groovy
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'
|
|
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)
|