[Gradle, JS] Not publish npm dependency constraints in metadata
^KT-41054 fixed
This commit is contained in:
+37
-19
@@ -10,24 +10,22 @@ import org.gradle.api.DomainObjectSet
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.ConfigurablePublishArtifact
|
||||
import org.gradle.api.artifacts.DependencyConstraint
|
||||
import org.gradle.api.artifacts.PublishArtifact
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.attributes.Usage.JAVA_RUNTIME_JARS
|
||||
import org.gradle.api.component.ComponentWithCoordinates
|
||||
import org.gradle.api.component.ComponentWithVariants
|
||||
import org.gradle.api.component.SoftwareComponent
|
||||
import org.gradle.api.component.SoftwareComponentFactory
|
||||
import org.gradle.api.component.*
|
||||
import org.gradle.api.internal.component.SoftwareComponentInternal
|
||||
import org.gradle.api.internal.component.UsageContext
|
||||
import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.gradle.util.WrapUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependencyConstraint
|
||||
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
|
||||
@@ -125,23 +123,43 @@ abstract class AbstractKotlinTarget(
|
||||
|
||||
adhocVariant as SoftwareComponent
|
||||
|
||||
if (kotlinVariant is KotlinVariantWithMetadataVariant) {
|
||||
object : ComponentWithVariants, ComponentWithCoordinates, SoftwareComponentInternal {
|
||||
override fun getCoordinates() = kotlinVariant.coordinates
|
||||
override fun getVariants(): Set<out SoftwareComponent> = kotlinVariant.variants
|
||||
override fun getName(): String = adhocVariant.name
|
||||
override fun getUsages(): MutableSet<out UsageContext> = (adhocVariant as SoftwareComponentInternal).usages
|
||||
}
|
||||
} else {
|
||||
object : ComponentWithCoordinates, SoftwareComponentInternal {
|
||||
override fun getCoordinates() = (kotlinVariant as? ComponentWithCoordinates)?.coordinates
|
||||
override fun getName(): String = adhocVariant.name
|
||||
override fun getUsages(): MutableSet<out UsageContext> = (adhocVariant as SoftwareComponentInternal).usages
|
||||
}
|
||||
}
|
||||
creatAdHocComponent(kotlinVariant, adhocVariant)
|
||||
}.toSet()
|
||||
}
|
||||
|
||||
private fun creatAdHocComponent(
|
||||
kotlinVariant: KotlinTargetComponent,
|
||||
adhocVariant: AdhocComponentWithVariants
|
||||
) = if (kotlinVariant is KotlinVariantWithMetadataVariant) {
|
||||
object : ComponentWithVariants, ComponentWithCoordinates, SoftwareComponentInternal {
|
||||
override fun getCoordinates() = kotlinVariant.coordinates
|
||||
override fun getVariants(): Set<out SoftwareComponent> = kotlinVariant.variants
|
||||
override fun getName(): String = adhocVariant.name
|
||||
override fun getUsages(): MutableSet<out UsageContext> =
|
||||
getUsages(adhocVariant as SoftwareComponentInternal)
|
||||
}
|
||||
} else {
|
||||
object : ComponentWithCoordinates, SoftwareComponentInternal {
|
||||
override fun getCoordinates() = (kotlinVariant as? ComponentWithCoordinates)?.coordinates
|
||||
override fun getName(): String = adhocVariant.name
|
||||
override fun getUsages(): MutableSet<out UsageContext> =
|
||||
getUsages(adhocVariant as SoftwareComponentInternal)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getUsages(component: SoftwareComponentInternal): MutableSet<out UsageContext> =
|
||||
component
|
||||
.usages
|
||||
.map { usageContext ->
|
||||
object : UsageContext by usageContext {
|
||||
override fun getDependencyConstraints(): MutableSet<out DependencyConstraint> =
|
||||
usageContext.dependencyConstraints
|
||||
.filterNot { it is NpmDependencyConstraint }
|
||||
.toMutableSet()
|
||||
}
|
||||
}
|
||||
.toMutableSet()
|
||||
|
||||
protected open fun createKotlinVariant(
|
||||
componentName: String,
|
||||
compilation: KotlinCompilation<*>,
|
||||
|
||||
+11
@@ -192,6 +192,17 @@ class KotlinNpmResolutionManager(private val nodeJsSettings: NodeJsRootExtension
|
||||
}
|
||||
}
|
||||
|
||||
internal fun putNpmResolution(
|
||||
path: String,
|
||||
version: String
|
||||
) {
|
||||
with(state) {
|
||||
if (this is ResolutionState.Configuring) {
|
||||
resolver.resolutions[path] = version
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal fun getNpmDependencyResolvedCompilation(npmDependency: NpmDependency): KotlinCompilationNpmResolution? {
|
||||
val project = npmDependency.project
|
||||
|
||||
|
||||
+10
-11
@@ -9,7 +9,6 @@ import org.gradle.api.Action
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.*
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.internal.artifacts.DefaultModuleIdentifier
|
||||
import org.gradle.api.internal.artifacts.dependencies.DefaultMutableVersionConstraint
|
||||
import org.gradle.api.internal.artifacts.dependencies.DependencyConstraintInternal
|
||||
import org.gradle.api.internal.attributes.ImmutableAttributes
|
||||
@@ -17,17 +16,15 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||
|
||||
class NpmDependencyConstraint(
|
||||
internal val project: Project,
|
||||
private val name: String,
|
||||
private val version: String,
|
||||
val scope: NpmDependency.Scope = NpmDependency.Scope.NORMAL
|
||||
private val path: String,
|
||||
private val version: String
|
||||
) : DependencyConstraintInternal {
|
||||
|
||||
private val moduleIdentifier = DefaultModuleIdentifier.newId(null, name);
|
||||
private val versionConstraint = DefaultMutableVersionConstraint(version)
|
||||
|
||||
override fun getGroup(): String? = moduleIdentifier.group
|
||||
override fun getGroup(): String? = null
|
||||
|
||||
override fun getName(): String = moduleIdentifier.name
|
||||
override fun getName(): String = path
|
||||
|
||||
override fun getVersion(): String = versionConstraint.version
|
||||
|
||||
@@ -36,7 +33,11 @@ class NpmDependencyConstraint(
|
||||
}
|
||||
|
||||
override fun getModule(): ModuleIdentifier {
|
||||
return moduleIdentifier
|
||||
return object : ModuleIdentifier {
|
||||
override fun getGroup(): String? = null
|
||||
|
||||
override fun getName(): String = path
|
||||
}
|
||||
}
|
||||
|
||||
override fun getAttributes(): AttributeContainer {
|
||||
@@ -60,10 +61,8 @@ class NpmDependencyConstraint(
|
||||
}
|
||||
|
||||
override fun getVersionConstraint(): VersionConstraint {
|
||||
println("get version constraint")
|
||||
val nodeJs = NodeJsRootPlugin.apply(project.rootProject)
|
||||
nodeJs.npmResolutionManager.requireConfiguringState()
|
||||
.resolutions[name] = version
|
||||
nodeJs.npmResolutionManager.putNpmResolution(path, version)
|
||||
return versionConstraint
|
||||
}
|
||||
|
||||
|
||||
-1
@@ -88,7 +88,6 @@ class YarnWorkspaces : YarnBasics() {
|
||||
YarnImportedPackagesVersionResolver(rootProject, npmProjects, nodeJsWorldDir).resolveAndUpdatePackages()
|
||||
|
||||
rootPackageJson.workspaces = npmProjectWorkspaces + importedProjectWorkspaces
|
||||
println("resolutions $resolutions")
|
||||
rootPackageJson.resolutions = resolutions
|
||||
rootPackageJson.saveTo(
|
||||
rootPackageJsonFile
|
||||
|
||||
Reference in New Issue
Block a user