diff --git a/.github/workflows/release-cli.yaml b/.github/workflows/release-cli.yaml index 2ff045ed1..2c8b56998 100644 --- a/.github/workflows/release-cli.yaml +++ b/.github/workflows/release-cli.yaml @@ -54,7 +54,7 @@ jobs: done cs bootstrap \ - --standalone \ + --assembly \ -o scip-java \ "$ARTIFACT" \ --main org.scip_code.scip_java.ScipJava diff --git a/docs/getting-started.md b/docs/getting-started.md index 5205703b4..3c5c5cae9 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -90,7 +90,7 @@ binary. # macOS/Linux curl -fLo coursier https://git.io/coursier-cli \ && chmod +x coursier \ - && ./coursier bootstrap --standalone -o scip-java org.scip-code:scip-java:@STABLE_VERSION@ --main org.scip_code.scip_java.ScipJava + && ./coursier bootstrap --assembly -o scip-java org.scip-code:scip-java:@STABLE_VERSION@ --main org.scip_code.scip_java.ScipJava ./scip-java --help ``` diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 17d7f9540..d55b4a94d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,6 @@ kotlin-analysis-api-k2 = { module = "org.jetbrains.kotlin:analysis-api-k2-for-id kotlin-analysis-api-platform-interface = { module = "org.jetbrains.kotlin:analysis-api-platform-interface-for-ide", version.ref = "kotlin-analysis-api" } kotlin-analysis-api-standalone = { module = "org.jetbrains.kotlin:analysis-api-standalone-for-ide", version.ref = "kotlin-analysis-api" } kotlin-analysis-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler", version.ref = "kotlin-analysis-api" } -kotlin-analysis-compiler-common = { module = "org.jetbrains.kotlin:kotlin-compiler-common-for-ide", version.ref = "kotlin-analysis-api" } kotlin-analysis-low-level-api-fir = { module = "org.jetbrains.kotlin:low-level-api-fir-for-ide", version.ref = "kotlin-analysis-api" } kotlin-analysis-symbol-light-classes = { module = "org.jetbrains.kotlin:symbol-light-classes-for-ide", version.ref = "kotlin-analysis-api" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } diff --git a/scip-kotlin-analysis/build.gradle.kts b/scip-kotlin-analysis/build.gradle.kts index f500d908c..6b6312a61 100644 --- a/scip-kotlin-analysis/build.gradle.kts +++ b/scip-kotlin-analysis/build.gradle.kts @@ -1,10 +1,26 @@ plugins { id("scip.java-library") id("scip.kotlin-jvm") + id("scip.maven-publish") } description = "Standalone Kotlin SCIP indexer built on the Kotlin Analysis API" +// The Analysis API `*-for-ide` artifacts and the IntelliJ coroutines fork are only +// published to JetBrains' repository, not Maven Central. They are merged into this +// module's jar, so the published POM only references Maven Central artifacts. +val bundled: Configuration by configurations.creating { + isCanBeConsumed = false +} +configurations.compileOnly { extendsFrom(bundled) } +configurations.testImplementation { extendsFrom(bundled) } + +tasks.named("jar") { + from({ bundled.map { zipTree(it) } }) { + exclude("META-INF/MANIFEST.MF") + } +} + // The Analysis API `*-for-ide` artifacts have unusable POM metadata (they drag in // IDE-only dependencies), so every artifact is pinned non-transitively — the same // approach used by Dokka's analysis-kotlin-symbols and KSP2. `kotlin-compiler` @@ -12,21 +28,19 @@ description = "Standalone Kotlin SCIP indexer built on the Kotlin Analysis API" dependencies { implementation(project(":scip-shared")) implementation(libs.scip.kotlin.bindings) + implementation(libs.kotlin.stdlib) implementation(libs.kotlin.analysis.compiler) { isTransitive = false } - implementation(libs.kotlin.analysis.api.api) { isTransitive = false } - implementation(libs.kotlin.analysis.api.standalone) { isTransitive = false } + bundled(libs.kotlin.analysis.api.api) { isTransitive = false } + bundled(libs.kotlin.analysis.api.standalone) { isTransitive = false } + bundled(libs.kotlin.analysis.api.impl.base) { isTransitive = false } + bundled(libs.kotlin.analysis.api.k2) { isTransitive = false } + bundled(libs.kotlin.analysis.low.level.api.fir) { isTransitive = false } + bundled(libs.kotlin.analysis.api.platform.`interface`) { isTransitive = false } + bundled(libs.kotlin.analysis.symbol.light.classes) { isTransitive = false } + bundled(libs.kotlinx.coroutines.core.jvm) { isTransitive = false } - runtimeOnly(libs.kotlin.analysis.api.impl.base) { isTransitive = false } - runtimeOnly(libs.kotlin.analysis.api.k2) { isTransitive = false } - // Provides org.jetbrains.kotlin.analysis.decompiler.* which is no longer - // bundled in kotlin-compiler as of the 2.4 line. - runtimeOnly(libs.kotlin.analysis.compiler.common) { isTransitive = false } - runtimeOnly(libs.kotlin.analysis.low.level.api.fir) { isTransitive = false } - runtimeOnly(libs.kotlin.analysis.api.platform.`interface`) { isTransitive = false } - runtimeOnly(libs.kotlin.analysis.symbol.light.classes) { isTransitive = false } runtimeOnly(libs.caffeine) - runtimeOnly(libs.kotlinx.coroutines.core.jvm) runtimeOnly(libs.kotlinx.collections.immutable.jvm) runtimeOnly(libs.kotlinx.serialization.json.jvm)