[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.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ConfigurablePublishArtifact
|
import org.gradle.api.artifacts.ConfigurablePublishArtifact
|
||||||
|
import org.gradle.api.artifacts.DependencyConstraint
|
||||||
import org.gradle.api.artifacts.PublishArtifact
|
import org.gradle.api.artifacts.PublishArtifact
|
||||||
import org.gradle.api.attributes.Attribute
|
import org.gradle.api.attributes.Attribute
|
||||||
import org.gradle.api.attributes.AttributeContainer
|
import org.gradle.api.attributes.AttributeContainer
|
||||||
import org.gradle.api.attributes.Usage.JAVA_RUNTIME_JARS
|
import org.gradle.api.attributes.Usage.JAVA_RUNTIME_JARS
|
||||||
import org.gradle.api.component.ComponentWithCoordinates
|
import org.gradle.api.component.*
|
||||||
import org.gradle.api.component.ComponentWithVariants
|
|
||||||
import org.gradle.api.component.SoftwareComponent
|
|
||||||
import org.gradle.api.component.SoftwareComponentFactory
|
|
||||||
import org.gradle.api.internal.component.SoftwareComponentInternal
|
import org.gradle.api.internal.component.SoftwareComponentInternal
|
||||||
import org.gradle.api.internal.component.UsageContext
|
import org.gradle.api.internal.component.UsageContext
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.api.provider.Provider
|
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
import org.gradle.api.publish.maven.MavenPublication
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.gradle.util.WrapUtil
|
import org.gradle.util.WrapUtil
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
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.dashSeparatedName
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
|
||||||
@@ -125,23 +123,43 @@ abstract class AbstractKotlinTarget(
|
|||||||
|
|
||||||
adhocVariant as SoftwareComponent
|
adhocVariant as SoftwareComponent
|
||||||
|
|
||||||
if (kotlinVariant is KotlinVariantWithMetadataVariant) {
|
creatAdHocComponent(kotlinVariant, adhocVariant)
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.toSet()
|
}.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(
|
protected open fun createKotlinVariant(
|
||||||
componentName: String,
|
componentName: String,
|
||||||
compilation: KotlinCompilation<*>,
|
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? {
|
internal fun getNpmDependencyResolvedCompilation(npmDependency: NpmDependency): KotlinCompilationNpmResolution? {
|
||||||
val project = npmDependency.project
|
val project = npmDependency.project
|
||||||
|
|
||||||
|
|||||||
+10
-11
@@ -9,7 +9,6 @@ import org.gradle.api.Action
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.*
|
import org.gradle.api.artifacts.*
|
||||||
import org.gradle.api.attributes.AttributeContainer
|
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.DefaultMutableVersionConstraint
|
||||||
import org.gradle.api.internal.artifacts.dependencies.DependencyConstraintInternal
|
import org.gradle.api.internal.artifacts.dependencies.DependencyConstraintInternal
|
||||||
import org.gradle.api.internal.attributes.ImmutableAttributes
|
import org.gradle.api.internal.attributes.ImmutableAttributes
|
||||||
@@ -17,17 +16,15 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
|||||||
|
|
||||||
class NpmDependencyConstraint(
|
class NpmDependencyConstraint(
|
||||||
internal val project: Project,
|
internal val project: Project,
|
||||||
private val name: String,
|
private val path: String,
|
||||||
private val version: String,
|
private val version: String
|
||||||
val scope: NpmDependency.Scope = NpmDependency.Scope.NORMAL
|
|
||||||
) : DependencyConstraintInternal {
|
) : DependencyConstraintInternal {
|
||||||
|
|
||||||
private val moduleIdentifier = DefaultModuleIdentifier.newId(null, name);
|
|
||||||
private val versionConstraint = DefaultMutableVersionConstraint(version)
|
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
|
override fun getVersion(): String = versionConstraint.version
|
||||||
|
|
||||||
@@ -36,7 +33,11 @@ class NpmDependencyConstraint(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getModule(): ModuleIdentifier {
|
override fun getModule(): ModuleIdentifier {
|
||||||
return moduleIdentifier
|
return object : ModuleIdentifier {
|
||||||
|
override fun getGroup(): String? = null
|
||||||
|
|
||||||
|
override fun getName(): String = path
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAttributes(): AttributeContainer {
|
override fun getAttributes(): AttributeContainer {
|
||||||
@@ -60,10 +61,8 @@ class NpmDependencyConstraint(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getVersionConstraint(): VersionConstraint {
|
override fun getVersionConstraint(): VersionConstraint {
|
||||||
println("get version constraint")
|
|
||||||
val nodeJs = NodeJsRootPlugin.apply(project.rootProject)
|
val nodeJs = NodeJsRootPlugin.apply(project.rootProject)
|
||||||
nodeJs.npmResolutionManager.requireConfiguringState()
|
nodeJs.npmResolutionManager.putNpmResolution(path, version)
|
||||||
.resolutions[name] = version
|
|
||||||
return versionConstraint
|
return versionConstraint
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -88,7 +88,6 @@ class YarnWorkspaces : YarnBasics() {
|
|||||||
YarnImportedPackagesVersionResolver(rootProject, npmProjects, nodeJsWorldDir).resolveAndUpdatePackages()
|
YarnImportedPackagesVersionResolver(rootProject, npmProjects, nodeJsWorldDir).resolveAndUpdatePackages()
|
||||||
|
|
||||||
rootPackageJson.workspaces = npmProjectWorkspaces + importedProjectWorkspaces
|
rootPackageJson.workspaces = npmProjectWorkspaces + importedProjectWorkspaces
|
||||||
println("resolutions $resolutions")
|
|
||||||
rootPackageJson.resolutions = resolutions
|
rootPackageJson.resolutions = resolutions
|
||||||
rootPackageJson.saveTo(
|
rootPackageJson.saveTo(
|
||||||
rootPackageJsonFile
|
rootPackageJsonFile
|
||||||
|
|||||||
Reference in New Issue
Block a user