@@ -24,6 +24,7 @@ import org.gradle.api.plugins.JavaPlugin
24
24
import org.gradle.api.tasks.TaskContainer
25
25
import org.gradle.api.tasks.TaskProvider
26
26
import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin
27
+ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
27
28
28
29
public abstract class ShadowJavaPlugin @Inject constructor(
29
30
private val softwareComponentFactory : SoftwareComponentFactory ,
@@ -52,8 +53,6 @@ public abstract class ShadowJavaPlugin @Inject constructor(
52
53
task.manifest.attributes[classPathAttributeKey] = attrs.joinToString(" " ).trim()
53
54
}
54
55
}
55
- task.from(sourceSets.named(" main" ).map { it.output })
56
- task.configurations.convention(listOf (runtimeConfiguration))
57
56
task.exclude(
58
57
" META-INF/INDEX.LIST" ,
59
58
" META-INF/*.SF" ,
@@ -63,6 +62,19 @@ public abstract class ShadowJavaPlugin @Inject constructor(
63
62
" META-INF/versions/**/module-info.class" ,
64
63
" module-info.class" ,
65
64
)
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
+ }
66
78
}
67
79
artifacts.add(configurations.shadow.name, taskProvider)
68
80
}
0 commit comments