-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle.kts
120 lines (117 loc) · 4.89 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
plugins {
kotlin("multiplatform") version libs.versions.kotlin apply false
alias(libs.plugins.kotest.multiplatform) apply false
alias(libs.plugins.buildlogic.multiplatform.library) apply false
alias(libs.plugins.buildlogic.android.application) apply false
alias(libs.plugins.buildlogic.android.library) apply false
alias(libs.plugins.dokka) apply false
alias(libs.plugins.nexus.publish)
}
subprojects {
tasks.withType<Test> {
useJUnitPlatform()
testLogging.showStandardStreams = true
}
pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
extensions.configure<KotlinProjectExtension> {
jvmToolchain(17)
}
extensions.configure<KotlinMultiplatformExtension> {
sourceSets {
val commonTest by getting {
dependencies {
implementation(libs.bundles.test.common)
}
}
}
afterEvaluate {
sourceSets {
findByName("jvmTest")?.apply {
dependencies {
implementation(libs.test.kotest.runner)
}
}
}
}
}
}
if (!path.startsWith(":sample") && !path.endsWith(":test")) {
apply(plugin = "maven-publish")
apply(plugin = "signing")
group = "io.github.irgaly.kfswatch"
afterEvaluate {
// afterEvaluate for accessing version catalogs
version = libs.versions.kfswatch.get()
}
val emptyJavadocJar = tasks.create<Jar>("emptyJavadocJar") {
archiveClassifier = "javadoc"
destinationDirectory = File(buildDir, "libs_emptyJavadoc")
}
extensions.configure<PublishingExtension> {
afterEvaluate {
afterEvaluate {
// KotlinMultiplatformPlugin は afterEvaluate により Android Publication を生成する
// 2 回目の afterEvaluate 以降で Android Publication にアクセスできる
publications.withType<MavenPublication>().all {
var javadocJar: Task? = emptyJavadocJar
var artifactSuffix = "-$name"
if (name == "kotlinMultiplatform") {
artifactSuffix = ""
javadocJar = tasks.findByName("javadocJar") ?: emptyJavadocJar
}
artifact(javadocJar)
artifactId = "${path.split(":").drop(1).joinToString("-")}$artifactSuffix"
pom {
name = artifactId
description = "Kotlin Multiplatform File System Watcher."
url = "https://github.com/irgaly/kfswatch"
developers {
developer {
id = "irgaly"
name = "irgaly"
email = "[email protected]"
}
}
licenses {
license {
name = "The Apache License, Version 2.0"
url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
}
}
scm {
connection = "[email protected]:irgaly/kfswatch.git"
developerConnection = "[email protected]:irgaly/kfswatch.git"
url = "https://github.com/irgaly/kfswatch"
}
}
}
}
}
}
extensions.configure<SigningExtension> {
useInMemoryPgpKeys(
providers.environmentVariable("SIGNING_PGP_KEY").orNull,
providers.environmentVariable("SIGNING_PGP_PASSWORD").orNull
)
if (providers.environmentVariable("CI").isPresent) {
sign(extensions.getByType<PublishingExtension>().publications)
}
}
tasks.withType<PublishToMavenRepository>().configureEach {
mustRunAfter(tasks.withType<Sign>())
}
}
}
nexusPublishing {
repositories {
sonatype {
// io.github.irgaly staging profile
stagingProfileId = "6c098027ed608f"
nexusUrl = uri("https://s01.oss.sonatype.org/service/local/")
snapshotRepositoryUrl =
uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
}
}
}