plugins { id("scala") id("org.scoverage") version "8.1" id("io.quarkus") } group = "de.nowchess" version = "1.0-SNAPSHOT" @Suppress("UNCHECKED_CAST") val versions = rootProject.extra["VERSIONS"] as Map @Suppress("UNCHECKED_CAST") val scoverageExcluded = rootProject.extra["SCOVERAGE_EXCLUDED"] as List repositories { mavenCentral() } scala { scalaVersion = versions["SCALA3"]!! } scoverage { scoverageVersion.set(versions["SCOVERAGE"]!!) excludedFiles.set(scoverageExcluded) } tasks.withType { scalaCompileOptions.additionalParameters = listOf("-encoding", "UTF-8") } val quarkusPlatformGroupId: String by project val quarkusPlatformArtifactId: String by project val quarkusPlatformVersion: String by project dependencies { compileOnly("org.scala-lang:scala3-compiler_3") { version { strictly(versions["SCALA3"]!!) } } implementation("org.scala-lang:scala3-library_3") { version { strictly(versions["SCALA3"]!!) } } implementation(project(":modules:api")) implementation(project(":modules:json")) implementation(project(":modules:rule")) implementation(project(":modules:io")) implementation(project(":modules:bot")) implementation(enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")) implementation("io.quarkus:quarkus-rest") implementation("io.quarkus:quarkus-hibernate-orm") implementation("io.quarkus:quarkus-rest-client-jackson") implementation("io.quarkus:quarkus-rest-client") implementation("io.quarkus:quarkus-grpc") implementation("io.quarkus:quarkus-rest-jackson") implementation("io.quarkus:quarkus-config-yaml") implementation("io.quarkus:quarkus-smallrye-fault-tolerance") implementation("io.quarkus:quarkus-smallrye-jwt") implementation("io.quarkus:quarkus-smallrye-health") implementation("io.quarkus:quarkus-micrometer") implementation("io.quarkus:quarkus-arc") implementation("io.quarkus:quarkus-websockets-next") implementation("com.fasterxml.jackson.module:jackson-module-scala_3:${versions["JACKSON_SCALA"]!!}") implementation("org.redisson:redisson:${versions["REDISSON"]!!}") testImplementation(project(":modules:io")) testImplementation(project(":modules:rule")) testImplementation(platform("org.junit:junit-bom:5.13.4")) testImplementation("org.junit.jupiter:junit-jupiter") testImplementation("org.scalatest:scalatest_3:${versions["SCALATEST"]!!}") testImplementation("co.helmethair:scalatest-junit-runner:${versions["SCALATEST_JUNIT"]!!}") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.quarkus:quarkus-junit5-mockito") testImplementation("io.rest-assured:rest-assured") testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") } configurations.matching { !it.name.startsWith("scoverage") }.configureEach { resolutionStrategy.force("org.scala-lang:scala-library:${versions["SCALA_LIBRARY"]!!}") } configurations.scoverage { resolutionStrategy.eachDependency { if (requested.group == "org.scoverage" && requested.name.startsWith("scalac-scoverage-plugin_")) { useTarget("${requested.group}:scalac-scoverage-plugin_2.13.16:2.3.0") } } } tasks.withType { options.encoding = "UTF-8" options.compilerArgs.add("-parameters") } tasks.withType().configureEach { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } tasks.test { useJUnitPlatform { includeEngines("scalatest", "junit-jupiter") testLogging { events("passed", "skipped", "failed") } } finalizedBy(tasks.reportScoverage) } tasks.reportScoverage { dependsOn(tasks.test) } tasks.jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } tasks.withType(org.gradle.api.tasks.scala.ScalaCompile::class).configureEach { if (name == "compileScoverageScala") { source = source.asFileTree.matching { exclude("**/grpc/*.scala") exclude("**/coordinator/*.scala") exclude("**/registry/RedisGameRegistry.scala") exclude("**/service/InstanceHeartbeatService.scala") exclude("**/resource/GameDtoMapper.scala") exclude("**/resource/GameResource.scala") exclude("**/redis/GameRedis*.scala") } } } tasks.named("compileScoverageJava").configure { dependsOn(tasks.named("quarkusGenerateCode")) } tasks.compileScala { dependsOn(tasks.named("compileJava")) }