import org.springframework.boot.gradle.tasks.bundling.BootBuildImage plugins { java id("org.springframework.boot") version "3.1.5" id("io.spring.dependency-management") version "1.1.0" id("org.sonarqube") version "4.0.0.2929" id("io.freefair.lombok") version "8.4" pmd `maven-publish` checkstyle jacoco } pmd { isConsoleOutput = true } configurations { compileOnly { extendsFrom(configurations.annotationProcessor.get()) } } tasks.pmdMain{ pmd.ruleSetFiles = files("${projectDir}/config/pmd/pmd.xml") } tasks.pmdTest { pmd.ruleSetFiles = files("${projectDir}/config/pmd/test_pmd.xml") } publishing { publications { create(name) { from(components["java"]) } } repositories { maven { url = uri("https://nexus.knecon.com/repository/red-platform-releases/") credentials { username = providers.gradleProperty("mavenUser").getOrNull() password = providers.gradleProperty("mavenPassword").getOrNull() } } } } repositories { mavenLocal() mavenCentral() maven { url = uri("https://nexus.knecon.com/repository/gindev/") credentials { username = providers.gradleProperty("mavenUser").getOrNull() password = providers.gradleProperty("mavenPassword").getOrNull() } } } tasks.named("bootBuildImage") { environment.put("BPE_DELIM_JAVA_TOOL_OPTIONS", " ") environment.put("BPE_APPEND_JAVA_TOOL_OPTIONS", "-Dfile.encoding=UTF-8") imageName.set("nexus.knecon.com:5001/ff/${project.name}:${project.version}") if (project.hasProperty("buildbootDockerHostNetwork")) { network.set("host") } docker { if (project.hasProperty("buildbootDockerHostNetwork")) { bindHostToBuilder.set(true) } verboseLogging.set(true) publishRegistry { username.set(providers.gradleProperty("mavenUser").getOrNull()) password.set(providers.gradleProperty("mavenPassword").getOrNull()) email.set(providers.gradleProperty("mavenEmail").getOrNull()) url.set("https://nexus.knecon.com:5001/") } } } configurations { all { exclude(group = "commons-logging", module = "commons-logging") exclude(group = "org.springframework.boot", module = "spring-boot-starter-log4j2") exclude(group = "com.iqser.red.commons", module = "logging-commons") } } val persistenceServiceVersion = "2.589.1-RED10196.2" dependencies { implementation("com.iqser.red.service:persistence-service-internal-api-v1:${persistenceServiceVersion}") implementation("com.knecon.fforesight:database-tenant-commons:0.28.0-RED10196.0") implementation("com.knecon.fforesight:keycloak-commons:0.28.0") implementation("com.knecon.fforesight:swagger-commons:0.7.0") implementation("com.knecon.fforesight:tracing-commons:0.5.0") implementation("com.knecon.fforesight:lifecycle-commons:0.6.0") implementation("net.logstash.logback:logstash-logback-encoder:7.4") implementation("ch.qos.logback:logback-classic") implementation("org.postgresql:postgresql:42.5.4") implementation("com.google.guava:guava:33.0.0-jre") implementation("org.liquibase:liquibase-core:4.20.0") implementation("org.keycloak:keycloak-admin-client:23.0.6") implementation("org.springframework.boot:spring-boot-starter-amqp") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.retry:spring-retry") implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server") implementation("org.springframework.boot:spring-boot-starter-data-redis") implementation("org.springframework.boot:spring-boot-starter-security") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-data-mongodb") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("commons-validator:commons-validator:1.8.0") implementation("org.springframework.boot:spring-boot-configuration-processor") implementation("com.iqser.red.commons:storage-commons:2.45.0") implementation("jakarta.mail:jakarta.mail-api:2.1.2") implementation("org.eclipse.angus:angus-mail:2.0.2") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.cloud:spring-cloud-starter-openfeign") developmentOnly("org.springframework.boot:spring-boot-devtools") annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.amqp:spring-rabbit-test") testImplementation("org.testcontainers:postgresql:1.19.7") testImplementation("org.testcontainers:testcontainers:1.19.7") testImplementation("org.testcontainers:junit-jupiter:1.19.7") testImplementation("com.github.dasniko:testcontainers-keycloak:3.2.0") } extra["springCloudVersion"] = "2022.0.4" extra["testcontainersVersion"] = "1.19.7" group = "com.knecon.fforesight" description = "tenant-user-management-service" java.sourceCompatibility = JavaVersion.VERSION_17 dependencyManagement { imports { mavenBom("org.testcontainers:testcontainers-bom:${property("testcontainersVersion")}") mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("springCloudVersion")}") } } tasks.withType { useJUnitPlatform() reports { junitXml.outputLocation.set(layout.buildDirectory.dir("reports/junit")) } } sonarqube { properties { property("sonar.login", providers.gradleProperty("sonarToken").getOrNull()) property("sonar.host.url", "https://sonarqube.knecon.com") } } tasks.test { finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run } tasks.jacocoTestReport { dependsOn(tasks.test) // tests are required to run before generating the report reports { xml.required.set(true) csv.required.set(false) } }