From 448dda37bfaa292f3e8812e44be2f9c07943cf11 Mon Sep 17 00:00:00 2001 From: Pekka Nikander Date: Thu, 2 Oct 2025 11:53:05 +0300 Subject: [PATCH] Publish Kotlin class outputs as SourceSet outputs for jdt.ls - Resolves Java <-> Kotlin in VSCode - Add build/classes/kotlin/{main,test} as SourceSet outputs (builtBy compileKotlin/compileTestKotlin) - Improves VSCode Java (jdt.ls via Buildship) classpath so Java can resolve Kotlin symbols in same module - Metadata-only; no change to packaging or runtime Signed-off-by: Pekka Nikander Resolves #14355 --- core-util-jvm/build.gradle.kts | 16 ++++++++++++++++ libsignal-service/build.gradle.kts | 15 +++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/core-util-jvm/build.gradle.kts b/core-util-jvm/build.gradle.kts index e5f480a02b..a59efc47f2 100644 --- a/core-util-jvm/build.gradle.kts +++ b/core-util-jvm/build.gradle.kts @@ -3,6 +3,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import org.gradle.api.tasks.SourceSetContainer + val signalJavaVersion: JavaVersion by rootProject.extra val signalKotlinJvmTarget: String by rootProject.extra @@ -49,6 +51,20 @@ tasks.runKtlintCheckOverMainSourceSet { dependsOn(":core-util-jvm:generateMainProtos") } +val sourceSets = extensions.getByName("sourceSets") as SourceSetContainer +sourceSets.named("main") { + output.dir( + mapOf("builtBy" to tasks.named("compileKotlin")), + "$buildDir/classes/kotlin/main" + ) +} +sourceSets.named("test") { + output.dir( + mapOf("builtBy" to tasks.named("compileTestKotlin")), + "$buildDir/classes/kotlin/test" + ) +} + dependencies { implementation(libs.kotlin.reflect) implementation(libs.kotlinx.coroutines.core) diff --git a/libsignal-service/build.gradle.kts b/libsignal-service/build.gradle.kts index c8b8d7bbfc..dcc6f9520d 100644 --- a/libsignal-service/build.gradle.kts +++ b/libsignal-service/build.gradle.kts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import org.gradle.api.tasks.SourceSetContainer import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -41,6 +42,20 @@ tasks.withType().configureEach { } } +val sourceSets = extensions.getByName("sourceSets") as SourceSetContainer +sourceSets.named("main") { + output.dir( + mapOf("builtBy" to tasks.named("compileKotlin")), + "$buildDir/classes/kotlin/main" + ) +} +sourceSets.named("test") { + output.dir( + mapOf("builtBy" to tasks.named("compileTestKotlin")), + "$buildDir/classes/kotlin/test" + ) +} + afterEvaluate { listOf( "runKtlintCheckOverMainSourceSet",