Skip to content

Commit 7cfa63d

Browse files
Publish scip-kotlin-analysis with JetBrains-only jars bundled (#1070)
* Publish scip-kotlin-analysis with JetBrains-only jars bundled scip-java 0.14.0 depends on scip-kotlin-analysis, which was never published, so org.scip-code:scip-java:0.14.0 does not resolve from Maven Central and the release-cli job failed. The Analysis API *-for-ide artifacts and the IntelliJ coroutines fork only exist on JetBrains' repository, so they are merged into the scip-kotlin-analysis jar and the published POM references only Maven Central artifacts. kotlin-compiler-common-for-ide is dropped: kotlin-compiler 2.4.0 already contains the decompiler classes it was added for, and kotlin-compiler already won every class the two jars share on the classpath. Amp-Thread-ID: https://ampcode.com/threads/T-01a1aac9-e7b5-72af-ad93-8f4a2a058fac Co-authored-by: Amp <amp@ampcode.com> * Build the release launcher with cs bootstrap --assembly The --standalone launcher keeps dependency jars nested inside the launcher jar, so the Kotlin compiler cannot locate extensions/compiler-cli-root.xml on disk and Kotlin indexing fails with "Unable to find extension point configuration". An --assembly launcher merges the dependencies into a single jar, which works. Amp-Thread-ID: https://ampcode.com/threads/T-01a1aac9-e7b5-72af-ad93-8f4a2a058fac Co-authored-by: Amp <amp@ampcode.com> --------- Co-authored-by: Amp <amp@ampcode.com>
1 parent ba3a674 commit 7cfa63d

4 files changed

Lines changed: 27 additions & 14 deletions

File tree

‎.github/workflows/release-cli.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
done
5555
5656
cs bootstrap \
57-
--standalone \
57+
--assembly \
5858
-o scip-java \
5959
"$ARTIFACT" \
6060
--main org.scip_code.scip_java.ScipJava

‎docs/getting-started.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ binary.
9090
# macOS/Linux
9191
curl -fLo coursier https://git.io/coursier-cli \
9292
&& chmod +x coursier \
93-
&& ./coursier bootstrap --standalone -o scip-java org.scip-code:scip-java:@STABLE_VERSION@ --main org.scip_code.scip_java.ScipJava
93+
&& ./coursier bootstrap --assembly -o scip-java org.scip-code:scip-java:@STABLE_VERSION@ --main org.scip_code.scip_java.ScipJava
9494
./scip-java --help
9595
```
9696

‎gradle/libs.versions.toml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ kotlin-analysis-api-k2 = { module = "org.jetbrains.kotlin:analysis-api-k2-for-id
3131
kotlin-analysis-api-platform-interface = { module = "org.jetbrains.kotlin:analysis-api-platform-interface-for-ide", version.ref = "kotlin-analysis-api" }
3232
kotlin-analysis-api-standalone = { module = "org.jetbrains.kotlin:analysis-api-standalone-for-ide", version.ref = "kotlin-analysis-api" }
3333
kotlin-analysis-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler", version.ref = "kotlin-analysis-api" }
34-
kotlin-analysis-compiler-common = { module = "org.jetbrains.kotlin:kotlin-compiler-common-for-ide", version.ref = "kotlin-analysis-api" }
3534
kotlin-analysis-low-level-api-fir = { module = "org.jetbrains.kotlin:low-level-api-fir-for-ide", version.ref = "kotlin-analysis-api" }
3635
kotlin-analysis-symbol-light-classes = { module = "org.jetbrains.kotlin:symbol-light-classes-for-ide", version.ref = "kotlin-analysis-api" }
3736
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }

‎scip-kotlin-analysis/build.gradle.kts‎

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,46 @@
11
plugins {
22
id("scip.java-library")
33
id("scip.kotlin-jvm")
4+
id("scip.maven-publish")
45
}
56

67
description = "Standalone Kotlin SCIP indexer built on the Kotlin Analysis API"
78

9+
// The Analysis API `*-for-ide` artifacts and the IntelliJ coroutines fork are only
10+
// published to JetBrains' repository, not Maven Central. They are merged into this
11+
// module's jar, so the published POM only references Maven Central artifacts.
12+
val bundled: Configuration by configurations.creating {
13+
isCanBeConsumed = false
14+
}
15+
configurations.compileOnly { extendsFrom(bundled) }
16+
configurations.testImplementation { extendsFrom(bundled) }
17+
18+
tasks.named<Jar>("jar") {
19+
from({ bundled.map { zipTree(it) } }) {
20+
exclude("META-INF/MANIFEST.MF")
21+
}
22+
}
23+
824
// The Analysis API `*-for-ide` artifacts have unusable POM metadata (they drag in
925
// IDE-only dependencies), so every artifact is pinned non-transitively — the same
1026
// approach used by Dokka's analysis-kotlin-symbols and KSP2. `kotlin-compiler`
1127
// (the non-embeddable jar) provides the bundled IntelliJ core classes at runtime.
1228
dependencies {
1329
implementation(project(":scip-shared"))
1430
implementation(libs.scip.kotlin.bindings)
31+
implementation(libs.kotlin.stdlib)
1532

1633
implementation(libs.kotlin.analysis.compiler) { isTransitive = false }
17-
implementation(libs.kotlin.analysis.api.api) { isTransitive = false }
18-
implementation(libs.kotlin.analysis.api.standalone) { isTransitive = false }
34+
bundled(libs.kotlin.analysis.api.api) { isTransitive = false }
35+
bundled(libs.kotlin.analysis.api.standalone) { isTransitive = false }
36+
bundled(libs.kotlin.analysis.api.impl.base) { isTransitive = false }
37+
bundled(libs.kotlin.analysis.api.k2) { isTransitive = false }
38+
bundled(libs.kotlin.analysis.low.level.api.fir) { isTransitive = false }
39+
bundled(libs.kotlin.analysis.api.platform.`interface`) { isTransitive = false }
40+
bundled(libs.kotlin.analysis.symbol.light.classes) { isTransitive = false }
41+
bundled(libs.kotlinx.coroutines.core.jvm) { isTransitive = false }
1942

20-
runtimeOnly(libs.kotlin.analysis.api.impl.base) { isTransitive = false }
21-
runtimeOnly(libs.kotlin.analysis.api.k2) { isTransitive = false }
22-
// Provides org.jetbrains.kotlin.analysis.decompiler.* which is no longer
23-
// bundled in kotlin-compiler as of the 2.4 line.
24-
runtimeOnly(libs.kotlin.analysis.compiler.common) { isTransitive = false }
25-
runtimeOnly(libs.kotlin.analysis.low.level.api.fir) { isTransitive = false }
26-
runtimeOnly(libs.kotlin.analysis.api.platform.`interface`) { isTransitive = false }
27-
runtimeOnly(libs.kotlin.analysis.symbol.light.classes) { isTransitive = false }
2843
runtimeOnly(libs.caffeine)
29-
runtimeOnly(libs.kotlinx.coroutines.core.jvm)
3044
runtimeOnly(libs.kotlinx.collections.immutable.jvm)
3145
runtimeOnly(libs.kotlinx.serialization.json.jvm)
3246

0 commit comments

Comments
 (0)