[Gradle, JS] Resolution of compilation's configurations inside NPM conf

^KT-40201 fixed
This commit is contained in:
Ilya Goncharov
2020-07-10 20:13:57 +03:00
parent 40311dbe05
commit 49c8d99f61
2 changed files with 24 additions and 4 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.sources
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope.* import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope.*
import org.jetbrains.kotlin.gradle.utils.API import org.jetbrains.kotlin.gradle.utils.API
@@ -31,6 +32,19 @@ internal fun Project.sourceSetDependencyConfigurationByScope(sourceSet: KotlinSo
} }
) )
internal fun Project.compilationDependencyConfigurationByScope(
compilation: KotlinCompilation<*>,
scope: KotlinDependencyScope
): Configuration =
project.configurations.getByName(
when (scope) {
API_SCOPE -> compilation.apiConfigurationName
IMPLEMENTATION_SCOPE -> compilation.implementationConfigurationName
COMPILE_ONLY_SCOPE -> compilation.compileOnlyConfigurationName
RUNTIME_ONLY_SCOPE -> compilation.runtimeOnlyConfigurationName
}
)
internal fun Project.sourceSetMetadataConfigurationByScope(sourceSet: KotlinSourceSet, scope: KotlinDependencyScope): Configuration = internal fun Project.sourceSetMetadataConfigurationByScope(sourceSet: KotlinSourceSet, scope: KotlinDependencyScope): Configuration =
project.configurations.getByName( project.configurations.getByName(
when (scope) { when (scope) {
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
@@ -133,10 +134,15 @@ internal class KotlinCompilationNpmResolver(
all.isCanBeResolved = true all.isCanBeResolved = true
all.description = "NPM configuration for $compilation." all.description = "NPM configuration for $compilation."
compilation.allKotlinSourceSets.forEach { sourceSet -> KotlinDependencyScope.values().forEach { scope ->
KotlinDependencyScope.values().forEach { scope -> val compilationConfiguration = project.compilationDependencyConfigurationByScope(
val configuration = project.sourceSetDependencyConfigurationByScope(sourceSet, scope) compilation,
all.extendsFrom(configuration) scope
)
all.extendsFrom(compilationConfiguration)
compilation.allKotlinSourceSets.forEach { sourceSet ->
val sourceSetConfiguration = project.sourceSetDependencyConfigurationByScope(sourceSet, scope)
all.extendsFrom(sourceSetConfiguration)
} }
} }