-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
93 lines (84 loc) · 2.14 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
import org.gradle.jvm.tasks.Jar
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
kotlin("multiplatform")
kotlin("plugin.serialization")
id("org.jetbrains.kotlinx.kover")
id("org.jetbrains.kotlinx.binary-compatibility-validator")
`maven-publish-convention`
}
allprojects {
repositories {
mavenCentral()
}
group = "space.iseki.bencoding"
if (version == "unspecified") version = "0.2.0-SNAPSHOT"
}
dependencies {
commonMainImplementation(kotlin("stdlib"))
commonMainApi(libs.kotlinx.serialization.core)
commonTestImplementation(kotlin("test"))
commonTestImplementation(libs.kotlinx.serialization.core)
commonTestImplementation(libs.kotlinx.serialization.json)
}
kotlin {
// The latest LTS
jvmToolchain(21)
jvm {
compilations.all {
compilerOptions.configure {
jvmTarget = JvmTarget.JVM_1_8
freeCompilerArgs.add("-Xjvm-default=all-compatibility")
}
}
withJava()
}
js {
browser {
webpackTask {
output.libraryTarget = "commonjs2"
}
}
binaries.executable()
}
sourceSets {
all {
languageSettings {
enableLanguageFeature("ContextReceivers")
}
}
}
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
sourceSets {
val java9 by java.sourceSets.creating
val a by configurations.commonMainApi
configurations.getByName("jvmJava9Api").extendsFrom(a)
}
}
tasks.getByName("jvmJar", Jar::class) {
manifest {
attributes("Multi-Release" to "true")
}
into("META-INF/versions/9") {
val java9 by sourceSets.getting
from(java9.output)
}
}
tasks.withType<Test> {
testLogging {
events("passed", "skipped", "failed")
}
}
tasks.withType<JavaCompile> {
// Keep consistent with Kotlin options
targetCompatibility = "1.8"
sourceCompatibility = "1.8"
}
tasks.getByName("compileJava9Java", JavaCompile::class) {
targetCompatibility = "1.9"
sourceCompatibility = "1.9"
}