Skip to content

Commit da479ea

Browse files
committed
Configure kmp related logic in ShadowKmpPlugin
1 parent a7e91f9 commit da479ea

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import org.gradle.api.plugins.JavaPlugin
2424
import org.gradle.api.tasks.TaskContainer
2525
import org.gradle.api.tasks.TaskProvider
2626
import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin
27-
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
2827

2928
public abstract class ShadowJavaPlugin @Inject constructor(
3029
private val softwareComponentFactory: SoftwareComponentFactory,
@@ -53,6 +52,8 @@ public abstract class ShadowJavaPlugin @Inject constructor(
5352
task.manifest.attributes[classPathAttributeKey] = attrs.joinToString(" ").trim()
5453
}
5554
}
55+
task.from(sourceSets.named("main").map { it.output })
56+
task.configurations.convention(provider { listOf(runtimeConfiguration) })
5657
task.exclude(
5758
"META-INF/INDEX.LIST",
5859
"META-INF/*.SF",
@@ -62,19 +63,6 @@ public abstract class ShadowJavaPlugin @Inject constructor(
6263
"META-INF/versions/**/module-info.class",
6364
"module-info.class",
6465
)
65-
66-
if (plugins.hasPlugin("org.jetbrains.kotlin.multiplatform")) {
67-
val kmpExtension = extensions.getByType(KotlinMultiplatformExtension::class.java)
68-
val kotlinJvmMain = kmpExtension.jvm().compilations.named("main")
69-
70-
task.from(kotlinJvmMain.map { it.output.allOutputs })
71-
task.configurations.convention(
72-
provider { listOf(configurations.getByName(kotlinJvmMain.get().runtimeDependencyConfigurationName)) },
73-
)
74-
} else {
75-
task.from(sourceSets.named("main").map { it.output })
76-
task.configurations.convention(provider { listOf(runtimeConfiguration) })
77-
}
7866
}
7967
artifacts.add(configurations.shadow.name, taskProvider)
8068
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.github.jengelman.gradle.plugins.shadow
2+
3+
import com.github.jengelman.gradle.plugins.shadow.ShadowJavaPlugin.Companion.shadowJar
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
7+
8+
public abstract class ShadowKmpPlugin : Plugin<Project> {
9+
10+
override fun apply(project: Project) {
11+
with(project) {
12+
val kmpExtension = extensions.getByType(KotlinMultiplatformExtension::class.java)
13+
val kotlinJvmMain = kmpExtension.jvm().compilations.named("main")
14+
tasks.shadowJar.configure { task ->
15+
task.from(kotlinJvmMain.map { it.output.allOutputs })
16+
task.configurations.convention(
17+
provider { listOf(configurations.getByName(kotlinJvmMain.get().runtimeDependencyConfigurationName)) },
18+
)
19+
}
20+
}
21+
}
22+
}

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public abstract class ShadowPlugin : Plugin<Project> {
2121
}
2222
withId("org.jetbrains.kotlin.multiplatform") {
2323
apply(ShadowJavaPlugin::class.java)
24+
apply(ShadowKmpPlugin::class.java)
2425
}
2526

2627
// Apply the legacy plugin last.

0 commit comments

Comments
 (0)