|
1 | 1 | plugins { |
2 | 2 | id("scip.java-library") |
3 | 3 | id("scip.kotlin-jvm") |
| 4 | + id("scip.maven-publish") |
4 | 5 | } |
5 | 6 |
|
6 | 7 | description = "Standalone Kotlin SCIP indexer built on the Kotlin Analysis API" |
7 | 8 |
|
| 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 | + |
8 | 24 | // The Analysis API `*-for-ide` artifacts have unusable POM metadata (they drag in |
9 | 25 | // IDE-only dependencies), so every artifact is pinned non-transitively — the same |
10 | 26 | // approach used by Dokka's analysis-kotlin-symbols and KSP2. `kotlin-compiler` |
11 | 27 | // (the non-embeddable jar) provides the bundled IntelliJ core classes at runtime. |
12 | 28 | dependencies { |
13 | 29 | implementation(project(":scip-shared")) |
14 | 30 | implementation(libs.scip.kotlin.bindings) |
| 31 | + implementation(libs.kotlin.stdlib) |
15 | 32 |
|
16 | 33 | 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 } |
19 | 42 |
|
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 } |
28 | 43 | runtimeOnly(libs.caffeine) |
29 | | - runtimeOnly(libs.kotlinx.coroutines.core.jvm) |
30 | 44 | runtimeOnly(libs.kotlinx.collections.immutable.jvm) |
31 | 45 | runtimeOnly(libs.kotlinx.serialization.json.jvm) |
32 | 46 |
|
|
0 commit comments