@@ -24,6 +24,7 @@ import org.gradle.api.plugins.JavaPlugin
2424import org.gradle.api.tasks.TaskContainer
2525import org.gradle.api.tasks.TaskProvider
2626import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin
27+ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
2728
2829public abstract class ShadowJavaPlugin @Inject constructor(
2930 private val softwareComponentFactory : SoftwareComponentFactory ,
@@ -52,8 +53,6 @@ public abstract class ShadowJavaPlugin @Inject constructor(
5253 task.manifest.attributes[classPathAttributeKey] = attrs.joinToString(" " ).trim()
5354 }
5455 }
55- task.from(sourceSets.named(" main" ).map { it.output })
56- task.configurations.convention(listOf (runtimeConfiguration))
5756 task.exclude(
5857 " META-INF/INDEX.LIST" ,
5958 " META-INF/*.SF" ,
@@ -63,6 +62,19 @@ public abstract class ShadowJavaPlugin @Inject constructor(
6362 " META-INF/versions/**/module-info.class" ,
6463 " module-info.class" ,
6564 )
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+ }
6678 }
6779 artifacts.add(configurations.shadow.name, taskProvider)
6880 }
0 commit comments