diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/applyUserDefinedAttributes.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/applyUserDefinedAttributes.kt index 9a1c8079957..ec310122c3e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/applyUserDefinedAttributes.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/applyUserDefinedAttributes.kt @@ -68,6 +68,7 @@ private val KotlinCompilation<*>.allOwnedConfigurationsNames runtimeOnlyConfigurationName, compileDependencyConfigurationName, runtimeDependencyConfigurationName, + internal.configurations.hostSpecificMetadataConfiguration?.name, ) val implementationSpecificConfigurations = when (this) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt index a09db4adb81..5438a6b5f16 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt @@ -634,4 +634,36 @@ class ConfigurationsTest : MultiplatformExtensionTest() { fail("Following configurations have the same attributes:\n$msg") } } + + @Test + fun `user-defined attributes should be present in host-specific metadata dependencies configuration`() { + val attribute = Attribute.of("userAttribute", String::class.java) + + val project = buildProjectWithMPP { + plugins.apply("maven-publish") + kotlin { + jvm() + iosX64 { + attributes { attribute(attribute, "foo") } + } + + iosArm64 { + attributes { attribute(attribute, "bar") } + } + + applyDefaultHierarchyTemplate() + } + } + project.evaluate() + + val iosX64HostSpecificMetadataDependencies = project.configurations.getByName("iosX64CompilationDependenciesMetadata") + val iosX64MetadataElements = project.configurations.getByName("iosX64MetadataElements") + assertEquals("foo", iosX64HostSpecificMetadataDependencies.attributes.getAttribute(attribute)) + assertEquals("foo", iosX64MetadataElements.attributes.getAttribute(attribute)) + + val iosArm64HostSpecificMetadataDependencies = project.configurations.getByName("iosArm64CompilationDependenciesMetadata") + val iosArm64MetadataElements = project.configurations.getByName("iosArm64MetadataElements") + assertEquals("bar", iosArm64HostSpecificMetadataDependencies.attributes.getAttribute(attribute)) + assertEquals("bar", iosArm64MetadataElements.attributes.getAttribute(attribute)) + } } \ No newline at end of file