import kotlinx.kover.gradle.plugin.dsl.CoverageUnit plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.detekt) alias(libs.plugins.kover) alias(libs.plugins.spring.boot) alias(libs.plugins.kotlin.spring) } apply { plugin("io.spring.dependency-management") } group = "dev.usbharu" version = "1.0-SNAPSHOT" repositories { mavenCentral() } dependencies { testImplementation(kotlin("test")) detektPlugins(libs.detekt.formatting) implementation("dev.usbharu:hideout-core:0.0.1") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-security") implementation(libs.bundles.jackson) } tasks.test { useJUnitPlatform() } kotlin { jvmToolchain(21) } configurations { matching { it.name == "detekt" }.all { resolutionStrategy.eachDependency { if (requested.group == "org.jetbrains.kotlin") { useVersion(io.gitlab.arturbosch.detekt.getSupportedKotlinVersion()) } } } all { exclude("org.apache.logging.log4j", "log4j-slf4j2-impl") } } tasks { withType { exclude("**/generated/**") setSource("src/main/kotlin") exclude("build/") configureEach { exclude("**/org/koin/ksp/generated/**", "**/generated/**") } } withType() { configureEach { exclude("**/org/koin/ksp/generated/**", "**/generated/**") } } withType { useJUnitPlatform() } } project.gradle.taskGraph.whenReady { if (this.hasTask(":koverGenerateArtifact")) { val task = this.allTasks.find { it.name == "test" } val verificationTask = task as VerificationTask verificationTask.ignoreFailures = true } } detekt { parallel = true config.setFrom(files("../detekt.yml")) buildUponDefaultConfig = true basePath = "${rootDir.absolutePath}/src/main/kotlin" autoCorrect = true } kover { currentProject { sources { } } reports { verify { rule { bound { minValue = 50 coverageUnits = CoverageUnit.INSTRUCTION } } } total { xml { title = "Hideout ActivityPub" xmlFile = file("$buildDir/reports/kover/hideout-activitypub.xml") } } filters { excludes { annotatedBy("org.springframework.context.annotation.Configuration") annotatedBy("org.springframework.boot.context.properties.ConfigurationProperties") packages( "dev.usbharu.hideout.controller.mastodon.generated", "dev.usbharu.hideout.domain.mastodon.model.generated" ) packages("org.springframework") packages("org.jetbrains") } } } }