155 lines
6.1 KiB
Plaintext
155 lines
6.1 KiB
Plaintext
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage
|
|
|
|
plugins {
|
|
application
|
|
id("com.iqser.red.service.java-conventions")
|
|
id("org.springframework.boot") version "3.1.5"
|
|
id("io.spring.dependency-management") version "1.1.3"
|
|
id("org.sonarqube") version "4.4.1.3373"
|
|
id("io.freefair.lombok") version "8.4"
|
|
}
|
|
|
|
description = "redaction-service-server-v1"
|
|
|
|
|
|
val layoutParserVersion = "0.96.0"
|
|
val jacksonVersion = "2.15.2"
|
|
val droolsVersion = "9.44.0.Final"
|
|
val pdfBoxVersion = "3.0.0"
|
|
val persistenceServiceVersion = "2.360.0"
|
|
val springBootStarterVersion = "3.1.5"
|
|
|
|
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")
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
|
|
implementation(project(":redaction-service-api-v1")) { exclude(group = "com.iqser.red.service", module = "persistence-service-internal-api-v1") }
|
|
implementation("com.iqser.red.service:persistence-service-internal-api-v1:${persistenceServiceVersion}") { exclude(group = "org.springframework.boot") }
|
|
implementation("com.knecon.fforesight:layoutparser-service-internal-api:${layoutParserVersion}")
|
|
|
|
implementation("com.iqser.red.commons:spring-commons:6.2.0")
|
|
implementation("com.iqser.red.commons:metric-commons:2.3.0")
|
|
|
|
implementation("com.iqser.red.commons:dictionary-merge-commons:1.5.0")
|
|
implementation("com.iqser.red.commons:storage-commons:2.45.0")
|
|
implementation("com.knecon.fforesight:tenant-commons:0.21.0")
|
|
implementation("com.knecon.fforesight:tracing-commons:0.5.0")
|
|
|
|
implementation("com.fasterxml.jackson.module:jackson-module-afterburner:${jacksonVersion}")
|
|
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${jacksonVersion}")
|
|
implementation("org.ahocorasick:ahocorasick:0.6.3")
|
|
implementation("org.javassist:javassist:3.29.2-GA")
|
|
|
|
implementation("org.drools:drools-engine:${droolsVersion}")
|
|
implementation("org.drools:drools-mvel:${droolsVersion}")
|
|
implementation("org.kie:kie-spring:7.74.1.Final")
|
|
|
|
implementation("org.locationtech.jts:jts-core:1.19.0")
|
|
|
|
implementation("org.springframework.cloud:spring-cloud-starter-openfeign:4.0.4")
|
|
implementation("org.springframework.boot:spring-boot-starter-amqp:${springBootStarterVersion}")
|
|
implementation("org.springframework.boot:spring-boot-starter-cache:${springBootStarterVersion}")
|
|
implementation("org.springframework.boot:spring-boot-starter-data-redis:${springBootStarterVersion}")
|
|
|
|
implementation("net.logstash.logback:logstash-logback-encoder:7.4")
|
|
implementation("ch.qos.logback:logback-classic")
|
|
|
|
implementation("org.reflections:reflections:0.10.2")
|
|
|
|
testImplementation(project(":rules-management"))
|
|
testImplementation("org.apache.pdfbox:pdfbox:${pdfBoxVersion}")
|
|
testImplementation("org.apache.pdfbox:pdfbox-tools:${pdfBoxVersion}")
|
|
|
|
testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootStarterVersion}")
|
|
testImplementation("com.knecon.fforesight:viewer-doc-processor:${layoutParserVersion}")
|
|
testImplementation("com.knecon.fforesight:layoutparser-service-processor:${layoutParserVersion}") {
|
|
exclude(
|
|
group = "com.iqser.red.service",
|
|
module = "persistence-service-shared-api-v1"
|
|
)
|
|
}
|
|
}
|
|
|
|
tasks.test {
|
|
configure<JacocoTaskExtension> {
|
|
excludes = listOf("org/drools/**/*")
|
|
}
|
|
minHeapSize = "512m"
|
|
maxHeapSize = "1024m"
|
|
}
|
|
|
|
|
|
|
|
|
|
tasks.named<BootBuildImage>("bootBuildImage") {
|
|
|
|
environment.put("BPE_DELIM_JAVA_TOOL_OPTIONS", " ")
|
|
environment.put("BPE_APPEND_JAVA_TOOL_OPTIONS", "-XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8")
|
|
|
|
imageName.set("nexus.knecon.com:5001/red/${project.name}")// must build image with same name always, otherwise the builder will not know which image to use as cache. DO NOT CHANGE!
|
|
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/")
|
|
}
|
|
|
|
val dockerTag = "nexus.knecon.com:5001/red/${project.name}:${project.version}"
|
|
tags.set(listOf(dockerTag))
|
|
}
|
|
}
|
|
|
|
fun parseDroolsImports(droolsFilePath: String): List<String> {
|
|
|
|
val imports = mutableListOf<String>()
|
|
val importPattern = Regex("^import\\s+(com\\.iqser\\.red\\.service\\.redaction\\.v1\\.[\\w.]+);")
|
|
val desiredPrefix = "com.iqser.red.service.redaction.v1"
|
|
|
|
File(droolsFilePath).forEachLine { line ->
|
|
importPattern.find(line)?.let { matchResult ->
|
|
val importPath = matchResult.groupValues[1].trim()
|
|
if (importPath.startsWith(desiredPrefix)) {
|
|
val formattedPath = importPath.replace('.', '/')
|
|
imports.add("$formattedPath.java")
|
|
}
|
|
}
|
|
}
|
|
|
|
return imports
|
|
}
|
|
|
|
val droolsImports = parseDroolsImports("redaction-service-v1/redaction-service-server-v1/src/main/resources/drools/all_rules_documine.drl")
|
|
|
|
tasks.register("generateJavaDoc", Javadoc::class) {
|
|
|
|
dependsOn("compileJava")
|
|
dependsOn("delombok")
|
|
classpath = project.sourceSets["main"].runtimeClasspath
|
|
source = fileTree("${buildDir}/generated/sources/delombok/java/main") {
|
|
include(droolsImports)
|
|
}
|
|
destinationDir = file(project.findProperty("javadocDestinationDir")?.toString() ?: "")
|
|
|
|
options.memberLevel = JavadocMemberLevel.PUBLIC
|
|
(options as StandardJavadocDocletOptions).apply {
|
|
header = "Redaction Service ${project.version}"
|
|
footer = "Redaction Service ${project.version}"
|
|
title = "API Documentation for Redaction Service ${project.version}"
|
|
}
|
|
}
|