Browse Source

CfW: rely on exact configuration names to find the dependencies (#4828)

igor.demin/fix-skiko-api-2 v1.6.20-dev1646
Oleksandr Karpovich 6 months ago committed by GitHub
parent
commit
a6961385cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 28
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/web/internal/configureWebApplication.kt

28
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/web/internal/configureWebApplication.kt

@ -9,6 +9,7 @@ import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ResolvedDependency
import org.gradle.api.artifacts.UnresolvedDependency
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.provider.Provider
import org.jetbrains.compose.ComposeBuildConfig
import org.jetbrains.compose.ComposeExtension
@ -27,20 +28,23 @@ internal fun Project.configureWeb(
// here we check all dependencies (including transitive)
// If there is compose.ui, then skiko is required!
val shouldRunUnpackSkiko = project.provider {
var dependsOnComposeUi = false
project.configurations.matching { configuration ->
val isWasmOrJs = configuration.name.contains("js", true) ||
configuration.name.contains("wasm", true)
configuration.isCanBeResolved && isWasmOrJs
}.all { configuration ->
val match = configuration.incoming.artifacts.resolvedArtifacts.get().any { artifact ->
artifact.id.componentIdentifier.toString().contains("org.jetbrains.compose.ui:ui:")
webExt.targetsToConfigure(project).any { target ->
val compilation = target.compilations.getByName("main")
val compileConfiguration = compilation.compileDependencyConfigurationName
val runtimeConfiguration = compilation.runtimeDependencyConfigurationName
listOf(compileConfiguration, runtimeConfiguration).mapNotNull { name ->
project.configurations.findByName(name)
}.flatMap { configuration ->
configuration.incoming.resolutionResult.allComponents.map { it.id }
}.any { identifier ->
if (identifier is ModuleComponentIdentifier) {
identifier.group == "org.jetbrains.compose.ui" && identifier.module == "ui"
} else {
false
}
}
dependsOnComposeUi = dependsOnComposeUi || match
}
dependsOnComposeUi
}
// configure only if there is k/wasm or k/js target:

Loading…
Cancel
Save