-
Notifications
You must be signed in to change notification settings - Fork 5
/
build.gradle.kts
97 lines (79 loc) · 2.37 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
plugins {
kotlin("multiplatform") apply false
id("org.jetbrains.dokka") version "1.5.0"
id("ru.vyarus.mkdocs") version "2.1.1"
}
// Collect all source and class directories for jacoco
// TODO: Is there a better way to do that?
val ignoreCoverageForProjects = setOf("integ-tests", "samples")
val allKotlinSourceDirs = allprojects
.filter { p -> p.name !in ignoreCoverageForProjects }
.flatMap { p ->
listOf(
"${p.projectDir}/src/commonMain/kotlin",
"${p.projectDir}/src/jvmMain/kotlin",
)
}
val allKotlinClassDirs = allprojects
.filter { p -> p.name !in ignoreCoverageForProjects }
.map { p ->
"${p.buildDir}/classes/kotlin/jvm/main"
}
allprojects {
group = "dev.evo.elasticmagic"
version = "0.0.1"
if (name == "samples") {
return@allprojects
}
apply {
plugin("org.jetbrains.kotlin.multiplatform")
plugin("jacoco")
}
repositories {
mavenCentral()
}
afterEvaluate {
tasks.register<JacocoReport>("jacocoJVMTestReport") {
group = "Reporting"
description = "Generate Jacoco coverage report."
classDirectories.setFrom(allKotlinClassDirs)
sourceDirectories.setFrom(allKotlinSourceDirs)
executionData.setFrom(files("$buildDir/jacoco/jvmTest.exec"))
reports {
html.required.set(true)
xml.required.set(true)
csv.required.set(false)
}
}
tasks.findByName("jvmTest")?.run {
outputs.upToDateWhen { false }
finalizedBy("jacocoJVMTestReport")
}
}
}
configureMultiplatform()
configure<KotlinMultiplatformExtension> {
sourceSets {
val commonMain by getting {
dependencies {
api(project(":elasticmagic-serde"))
api(project(":elasticmagic-transport"))
}
}
}
}
tasks.dokkaHtml {
outputDirectory.set(buildDir.resolve("mkdocs/api/latest"))
dokkaSourceSets {
configureEach {
includes.from("docs/api/packages.md")
samples.from("samples/src/main/kotlin")
}
}
}
mkdocs {
sourcesDir = "docs"
publish.docPath = ""
}
tasks.getByName("mkdocsBuild").dependsOn(":samples:compileKotlin")