Skip to content

Commit dcd851e

Browse files
committed
tidy up build config
1 parent 6a06316 commit dcd851e

File tree

6 files changed

+71
-61
lines changed

6 files changed

+71
-61
lines changed

buildSrc/build.gradle.kts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,3 @@ dependencies {
1717
implementation("org.jetbrains:markdown:0.3.5")
1818
implementation("org.jetbrains.kotlinx:kotlinx-html:0.9.1")
1919
}
20-
21-
kotlin {
22-
jvmToolchain {
23-
languageVersion.set(
24-
libs.versions.jvmTarget.map {
25-
JavaLanguageVersion.of(it)
26-
}
27-
)
28-
}
29-
}

buildSrc/src/main/kotlin/buildsrc/extensions/gradle.kt renamed to buildSrc/src/main/kotlin/buildsrc/config/nodePlugin.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
package buildsrc.config
2+
13
import com.github.gradle.node.npm.task.NpmTask
2-
import org.gradle.api.provider.ListProperty
34
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
45

56
fun NpmTask.args(values: String) {

buildSrc/src/main/kotlin/buildsrc/convention/kotlin-jvm.gradle.kts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package buildsrc.convention
22

3-
import org.gradle.kotlin.dsl.`java-library`
4-
import org.gradle.kotlin.dsl.dependencies
53
import org.gradle.kotlin.dsl.kotlin
6-
import org.gradle.kotlin.dsl.withType
4+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
5+
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
76
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
87

98
plugins {
@@ -32,21 +31,25 @@ java {
3231
}
3332

3433
tasks.withType<KotlinCompile>().configureEach {
35-
kotlinOptions {
36-
jvmTarget = "11"
37-
apiVersion = "1.7"
38-
languageVersion = "1.7"
34+
compilerOptions {
35+
jvmTarget = JvmTarget.JVM_11
36+
apiVersion = KotlinVersion.KOTLIN_1_7
37+
languageVersion = KotlinVersion.KOTLIN_1_7
38+
39+
freeCompilerArgs.addAll(
40+
"-opt-in=kotlin.RequiresOptIn",
41+
"-opt-in=kotlin.ExperimentalStdlibApi",
42+
"-opt-in=kotlin.time.ExperimentalTime",
43+
)
3944
}
40-
41-
kotlinOptions.freeCompilerArgs += listOf(
42-
"-opt-in=kotlin.RequiresOptIn",
43-
"-opt-in=kotlin.ExperimentalStdlibApi",
44-
"-opt-in=kotlin.time.ExperimentalTime",
45-
)
4645
}
4746

4847
tasks.compileTestKotlin {
49-
kotlinOptions.freeCompilerArgs += "-opt-in=io.kotest.common.ExperimentalKotest"
48+
compilerOptions {
49+
freeCompilerArgs.addAll(
50+
"-opt-in=io.kotest.common.ExperimentalKotest",
51+
)
52+
}
5053
}
5154

5255
tasks.withType<Test>().configureEach {

buildSrc/src/main/kotlin/buildsrc/convention/maven-publish.gradle.kts

Lines changed: 50 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package buildsrc.convention
22

3-
import buildsrc.config.*
3+
import buildsrc.config.createKxsTsGenPom
4+
import buildsrc.config.credentialsAction
5+
import buildsrc.config.isKotlinMultiplatformJavaEnabled
46
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
57

68

@@ -32,19 +34,6 @@ val signingSecretKeyRingFile: Provider<String> =
3234
providers.gradleProperty("signing.secretKeyRingFile")
3335

3436

35-
36-
tasks.withType<AbstractPublishToMaven>().configureEach {
37-
// Gradle warns about some signing tasks using publishing task outputs without explicit
38-
// dependencies. I'm not going to go through them all and fix them, so here's a quick fix.
39-
dependsOn(tasks.withType<Sign>())
40-
mustRunAfter(tasks.withType<Sign>())
41-
42-
doLast {
43-
logger.lifecycle("[${path}] ${publication?.groupId}:${publication?.artifactId}:${publication?.version}")
44-
}
45-
}
46-
47-
4837
signing {
4938
if (sonatypeRepositoryCredentials.isPresent()) {
5039
if (signingKeyId.isPresent() && signingKey.isPresent() && signingPassword.isPresent()) {
@@ -70,7 +59,25 @@ afterEvaluate {
7059
}
7160
}
7261

73-
val javadocJarStub = javadocStubTask()
62+
//region Javadoc JAR stub
63+
// use creating, not registering, because the signing plugin doesn't accept task providers
64+
val javadocJarStub by tasks.creating(Jar::class) {
65+
group = JavaBasePlugin.DOCUMENTATION_GROUP
66+
description = "Stub javadoc.jar artifact (required by Maven Central)"
67+
archiveClassifier.set("javadoc")
68+
}
69+
70+
tasks.withType<AbstractPublishToMaven>().all {
71+
dependsOn(javadocJarStub)
72+
}
73+
74+
if (sonatypeRepositoryCredentials.isPresent()) {
75+
val signingTasks = signing.sign(javadocJarStub)
76+
tasks.withType<AbstractPublishToMaven>().all {
77+
signingTasks.forEach { dependsOn(it) }
78+
}
79+
}
80+
//endregion
7481

7582
publishing {
7683
if (sonatypeRepositoryCredentials.isPresent()) {
@@ -119,26 +126,36 @@ plugins.withType<JavaPlatformPlugin>().configureEach {
119126
}
120127
}
121128

129+
//region Fix Gradle warning about signing tasks using publishing task outputs without explicit dependencies
130+
// https://youtrack.jetbrains.com/issue/KT-46466 https://github.com/gradle/gradle/issues/26091
131+
tasks.withType<AbstractPublishToMaven>().configureEach {
132+
val signingTasks = tasks.withType<Sign>()
133+
mustRunAfter(signingTasks)
134+
}
135+
//endregion
122136

123-
fun Project.javadocStubTask(): Jar {
124-
125-
// use creating, not registering, because the signing plugin sucks
126-
val javadocJarStub by tasks.creating(Jar::class) {
127-
group = JavaBasePlugin.DOCUMENTATION_GROUP
128-
description = "Stub javadoc.jar artifact (required by Maven Central)"
129-
archiveClassifier.set("javadoc")
137+
//region publishing logging
138+
tasks.withType<AbstractPublishToMaven>().configureEach {
139+
val publicationGAV = provider { publication?.run { "$group:$artifactId:$version" } }
140+
doLast("log publication GAV") {
141+
if (publicationGAV.isPresent) {
142+
logger.lifecycle("[task: ${path}] ${publicationGAV.get()}")
143+
}
130144
}
145+
}
146+
//endregion
131147

132-
tasks.withType<AbstractPublishToMaven>().all {
133-
dependsOn(javadocJarStub)
134-
}
148+
//region IJ workarounds
149+
// manually define the Kotlin DSL accessors because IntelliJ _still_ doesn't load them properly
150+
fun Project.publishing(configure: PublishingExtension.() -> Unit): Unit =
151+
extensions.configure(configure)
135152

136-
if (sonatypeRepositoryCredentials.isPresent()) {
137-
val signingTasks = signing.sign(javadocJarStub)
138-
tasks.withType<AbstractPublishToMaven>().all {
139-
signingTasks.forEach { dependsOn(it) }
140-
}
141-
}
153+
val Project.publishing: PublishingExtension
154+
get() = extensions.getByType()
142155

143-
return javadocJarStub
144-
}
156+
fun Project.signing(configure: SigningExtension.() -> Unit): Unit =
157+
extensions.configure(configure)
158+
159+
val Project.signing: SigningExtension
160+
get() = extensions.getByType()
161+
//endregion

buildSrc/src/main/kotlin/buildsrc/convention/node.gradle.kts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ plugins {
55
id("buildsrc.convention.base")
66
}
77

8-
val rootGradleDir: Directory by extra {
9-
rootProject.layout.projectDirectory.dir(".gradle")
10-
}
8+
val rootGradleDir: Directory = rootProject.layout.projectDirectory.dir(".gradle")
119

1210
node {
1311
download.set(true)

site/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import com.github.gradle.node.npm.task.NpmTask
22
import java.net.URI
3+
import buildsrc.config.*
34

45
plugins {
56
buildsrc.convention.base

0 commit comments

Comments
 (0)